@pdtf/schemas 3.6.0-dev.3 → 3.6.0-dev.4

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 (263) hide show
  1. package/charming-napier-57a77c/LICENSE +21 -0
  2. package/charming-napier-57a77c/README.md +430 -0
  3. package/charming-napier-57a77c/docs/sef25-extensions-ui-spec.md +355 -0
  4. package/charming-napier-57a77c/index.js +654 -0
  5. package/charming-napier-57a77c/package-lock.json +7297 -0
  6. package/charming-napier-57a77c/package.json +41 -0
  7. package/charming-napier-57a77c/src/examples/v1/exampleAddParticipantVouch.json +32 -0
  8. package/charming-napier-57a77c/src/examples/v1/exampleDocumentedVouch.json +40 -0
  9. package/charming-napier-57a77c/src/examples/v1/exampleElectronicRecord.json +30 -0
  10. package/charming-napier-57a77c/src/examples/v1/exampleTransaction.json +878 -0
  11. package/charming-napier-57a77c/src/examples/v1/exampleVouch.json +25 -0
  12. package/charming-napier-57a77c/src/examples/v2/exampleTransaction.json +901 -0
  13. package/charming-napier-57a77c/src/examples/v3/exampleAddParticipantVouch.json +38 -0
  14. package/charming-napier-57a77c/src/examples/v3/exampleCustomOverlay.json +55 -0
  15. package/charming-napier-57a77c/src/examples/v3/exampleCustomOverlay2.json +93 -0
  16. package/charming-napier-57a77c/src/examples/v3/exampleDocumentedVouch.json +47 -0
  17. package/charming-napier-57a77c/src/examples/v3/exampleElectronicRecord.json +36 -0
  18. package/charming-napier-57a77c/src/examples/v3/exampleTransaction.json +1038 -0
  19. package/charming-napier-57a77c/src/examples/v3/exampleVouch.json +32 -0
  20. package/charming-napier-57a77c/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
  21. package/charming-napier-57a77c/src/mappings/adf.js +198 -0
  22. package/charming-napier-57a77c/src/schemas/v1/GeoJSON.json +1279 -0
  23. package/charming-napier-57a77c/src/schemas/v1/baspiNotes.html +102 -0
  24. package/charming-napier-57a77c/src/schemas/v1/energy-performance-certificate.json +124 -0
  25. package/charming-napier-57a77c/src/schemas/v1/freehold-information.json +2051 -0
  26. package/charming-napier-57a77c/src/schemas/v1/leasehold-information.json +2064 -0
  27. package/charming-napier-57a77c/src/schemas/v1/legal-information.json +1045 -0
  28. package/charming-napier-57a77c/src/schemas/v1/material-facts.json +2109 -0
  29. package/charming-napier-57a77c/src/schemas/v1/pdtf-transaction-search-results.json +40 -0
  30. package/charming-napier-57a77c/src/schemas/v1/pdtf-transaction.json +191 -0
  31. package/charming-napier-57a77c/src/schemas/v1/searches/drainage-and-water.json +261 -0
  32. package/charming-napier-57a77c/src/schemas/v1/searches/local-land-charges.json +69 -0
  33. package/charming-napier-57a77c/src/schemas/v1/searches/local-searches-required.json +857 -0
  34. package/charming-napier-57a77c/src/schemas/v1/searches.json +237 -0
  35. package/charming-napier-57a77c/src/schemas/v1/title-deed.json +841 -0
  36. package/charming-napier-57a77c/src/schemas/v2/baspiNotes.html +102 -0
  37. package/charming-napier-57a77c/src/schemas/v2/combined.json +37731 -0
  38. package/charming-napier-57a77c/src/schemas/v2/overlays/baspi.json +8132 -0
  39. package/charming-napier-57a77c/src/schemas/v2/overlays/con29DW.json +705 -0
  40. package/charming-napier-57a77c/src/schemas/v2/overlays/con29R.json +2956 -0
  41. package/charming-napier-57a77c/src/schemas/v2/overlays/fme1.json +1259 -0
  42. package/charming-napier-57a77c/src/schemas/v2/overlays/llc1.json +25 -0
  43. package/charming-napier-57a77c/src/schemas/v2/overlays/lpe1.json +2171 -0
  44. package/charming-napier-57a77c/src/schemas/v2/overlays/nts.json +326 -0
  45. package/charming-napier-57a77c/src/schemas/v2/overlays/oc1.json +2799 -0
  46. package/charming-napier-57a77c/src/schemas/v2/overlays/piq.json +3419 -0
  47. package/charming-napier-57a77c/src/schemas/v2/overlays/rds.json +3736 -0
  48. package/charming-napier-57a77c/src/schemas/v2/overlays/ta10.json +5306 -0
  49. package/charming-napier-57a77c/src/schemas/v2/overlays/ta6.json +4533 -0
  50. package/charming-napier-57a77c/src/schemas/v2/overlays/ta7.json +1045 -0
  51. package/charming-napier-57a77c/src/schemas/v2/pdtf-transaction.json +34351 -0
  52. package/charming-napier-57a77c/src/schemas/v2/skeleton.json +3973 -0
  53. package/charming-napier-57a77c/src/schemas/v3/combined.json +48153 -0
  54. package/charming-napier-57a77c/src/schemas/v3/compactSkeleton.txt +4457 -0
  55. package/charming-napier-57a77c/src/schemas/v3/overlays/README.md +299 -0
  56. package/charming-napier-57a77c/src/schemas/v3/overlays/baspi4.json +8027 -0
  57. package/charming-napier-57a77c/src/schemas/v3/overlays/baspi5.json +8177 -0
  58. package/charming-napier-57a77c/src/schemas/v3/overlays/con29DW.json +716 -0
  59. package/charming-napier-57a77c/src/schemas/v3/overlays/con29R.json +2981 -0
  60. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ac.json +333 -0
  61. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/as.json +74 -0
  62. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/dk.json +32 -0
  63. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/dr.json +73 -0
  64. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/er.json +85 -0
  65. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/fd.json +75 -0
  66. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/hi.json +51 -0
  67. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/hs.json +73 -0
  68. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ic.json +59 -0
  69. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/jk.json +96 -0
  70. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/la.json +85 -0
  71. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/lc.json +75 -0
  72. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ma.json +90 -0
  73. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/mc.json +38 -0
  74. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/mi.json +69 -0
  75. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/nd.json +43 -0
  76. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/oa.json +24 -0
  77. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/oc.json +57 -0
  78. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/pc.json +37 -0
  79. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ph.json +194 -0
  80. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/rw.json +68 -0
  81. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sb.json +73 -0
  82. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sc.json +129 -0
  83. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sd.json +63 -0
  84. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sf.json +74 -0
  85. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/sl.json +68 -0
  86. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/ta.json +240 -0
  87. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/tf.json +103 -0
  88. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/tr.json +73 -0
  89. package/charming-napier-57a77c/src/schemas/v3/overlays/extensions/wg.json +350 -0
  90. package/charming-napier-57a77c/src/schemas/v3/overlays/fme1.json +1266 -0
  91. package/charming-napier-57a77c/src/schemas/v3/overlays/llc1.json +25 -0
  92. package/charming-napier-57a77c/src/schemas/v3/overlays/lpe1.json +2199 -0
  93. package/charming-napier-57a77c/src/schemas/v3/overlays/nts.json +2157 -0
  94. package/charming-napier-57a77c/src/schemas/v3/overlays/nts2.json +2742 -0
  95. package/charming-napier-57a77c/src/schemas/v3/overlays/ntsl.json +1813 -0
  96. package/charming-napier-57a77c/src/schemas/v3/overlays/ntsl2.json +2217 -0
  97. package/charming-napier-57a77c/src/schemas/v3/overlays/oc1.json +2817 -0
  98. package/charming-napier-57a77c/src/schemas/v3/overlays/piq.json +3321 -0
  99. package/charming-napier-57a77c/src/schemas/v3/overlays/rds.json +3665 -0
  100. package/charming-napier-57a77c/src/schemas/v3/overlays/sef25.json +1639 -0
  101. package/charming-napier-57a77c/src/schemas/v3/overlays/sr24.json +38 -0
  102. package/charming-napier-57a77c/src/schemas/v3/overlays/ta10.json +4654 -0
  103. package/charming-napier-57a77c/src/schemas/v3/overlays/ta6.json +4568 -0
  104. package/charming-napier-57a77c/src/schemas/v3/overlays/ta6ed6.json +6537 -0
  105. package/charming-napier-57a77c/src/schemas/v3/overlays/ta7.json +1537 -0
  106. package/charming-napier-57a77c/src/schemas/v3/overlays/ta7ed5.json +1551 -0
  107. package/charming-napier-57a77c/src/schemas/v3/pdtf-transaction.json +41229 -0
  108. package/charming-napier-57a77c/src/schemas/v3/skeleton.json +5703 -0
  109. package/charming-napier-57a77c/src/schemas/verifiedClaims/README.md +21 -0
  110. package/charming-napier-57a77c/src/schemas/verifiedClaims/pdtf-verified-claims.json +447 -0
  111. package/charming-napier-57a77c/src/tests/v3/buyerCircumstances.test.js +543 -0
  112. package/charming-napier-57a77c/src/tests/v3/caching.test.js +591 -0
  113. package/charming-napier-57a77c/src/tests/v3/enquiries.test.js +1096 -0
  114. package/charming-napier-57a77c/src/tests/v3/extensionOverlays.test.js +1599 -0
  115. package/charming-napier-57a77c/src/tests/v3/offers.test.js +823 -0
  116. package/charming-napier-57a77c/src/tests/v3/patternProperties.test.js +688 -0
  117. package/charming-napier-57a77c/src/tests/v3/ta6ed6.test.js +2374 -0
  118. package/charming-napier-57a77c/src/tests/v3/ta7ed5.test.js +600 -0
  119. package/charming-napier-57a77c/src/tests/v3/transactionSchema.test.js +646 -0
  120. package/charming-napier-57a77c/src/tests/v3/verifiedClaimsValidator.test.js +195 -0
  121. package/charming-napier-57a77c/src/utils/compactSkeleton.js +84 -0
  122. package/charming-napier-57a77c/src/utils/countTokens.js +67 -0
  123. package/charming-napier-57a77c/src/utils/extractExtensionOverlays.js +624 -0
  124. package/charming-napier-57a77c/src/utils/extractOverlay.js +381 -0
  125. package/charming-napier-57a77c/src/utils/extractProperties.js +44 -0
  126. package/charming-napier-57a77c/src/utils/listPathTitles.js +36 -0
  127. package/charming-napier-57a77c/src/utils/minimalSkeleton.js +85 -0
  128. package/charming-napier-57a77c/src/utils/pathList.csv +903 -0
  129. package/charming-napier-57a77c/src/utils/pathSkeleton.js +181 -0
  130. package/keen-dewdney-6ae15b/LICENSE +21 -0
  131. package/keen-dewdney-6ae15b/README.md +334 -0
  132. package/keen-dewdney-6ae15b/index.js +557 -0
  133. package/keen-dewdney-6ae15b/package-lock.json +7296 -0
  134. package/keen-dewdney-6ae15b/package.json +39 -0
  135. package/keen-dewdney-6ae15b/src/examples/v1/exampleAddParticipantVouch.json +32 -0
  136. package/keen-dewdney-6ae15b/src/examples/v1/exampleDocumentedVouch.json +40 -0
  137. package/keen-dewdney-6ae15b/src/examples/v1/exampleElectronicRecord.json +30 -0
  138. package/keen-dewdney-6ae15b/src/examples/v1/exampleTransaction.json +878 -0
  139. package/keen-dewdney-6ae15b/src/examples/v1/exampleVouch.json +25 -0
  140. package/keen-dewdney-6ae15b/src/examples/v2/exampleTransaction.json +901 -0
  141. package/keen-dewdney-6ae15b/src/examples/v3/exampleAddParticipantVouch.json +35 -0
  142. package/keen-dewdney-6ae15b/src/examples/v3/exampleCustomOverlay.json +55 -0
  143. package/keen-dewdney-6ae15b/src/examples/v3/exampleCustomOverlay2.json +93 -0
  144. package/keen-dewdney-6ae15b/src/examples/v3/exampleDocumentedVouch.json +44 -0
  145. package/keen-dewdney-6ae15b/src/examples/v3/exampleElectronicRecord.json +33 -0
  146. package/keen-dewdney-6ae15b/src/examples/v3/exampleTransaction.json +1034 -0
  147. package/keen-dewdney-6ae15b/src/examples/v3/exampleVouch.json +29 -0
  148. package/keen-dewdney-6ae15b/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
  149. package/keen-dewdney-6ae15b/src/mappings/adf.js +198 -0
  150. package/keen-dewdney-6ae15b/src/schemas/v1/GeoJSON.json +1279 -0
  151. package/keen-dewdney-6ae15b/src/schemas/v1/baspiNotes.html +102 -0
  152. package/keen-dewdney-6ae15b/src/schemas/v1/energy-performance-certificate.json +124 -0
  153. package/keen-dewdney-6ae15b/src/schemas/v1/freehold-information.json +2051 -0
  154. package/keen-dewdney-6ae15b/src/schemas/v1/leasehold-information.json +2064 -0
  155. package/keen-dewdney-6ae15b/src/schemas/v1/legal-information.json +1045 -0
  156. package/keen-dewdney-6ae15b/src/schemas/v1/material-facts.json +2109 -0
  157. package/keen-dewdney-6ae15b/src/schemas/v1/pdtf-transaction-search-results.json +40 -0
  158. package/keen-dewdney-6ae15b/src/schemas/v1/pdtf-transaction.json +191 -0
  159. package/keen-dewdney-6ae15b/src/schemas/v1/searches/drainage-and-water.json +261 -0
  160. package/keen-dewdney-6ae15b/src/schemas/v1/searches/local-land-charges.json +69 -0
  161. package/keen-dewdney-6ae15b/src/schemas/v1/searches/local-searches-required.json +857 -0
  162. package/keen-dewdney-6ae15b/src/schemas/v1/searches.json +237 -0
  163. package/keen-dewdney-6ae15b/src/schemas/v1/title-deed.json +841 -0
  164. package/keen-dewdney-6ae15b/src/schemas/v2/baspiNotes.html +102 -0
  165. package/keen-dewdney-6ae15b/src/schemas/v2/combined.json +37731 -0
  166. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/baspi.json +8132 -0
  167. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/con29DW.json +705 -0
  168. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/con29R.json +2956 -0
  169. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/fme1.json +1259 -0
  170. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/llc1.json +25 -0
  171. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/lpe1.json +2171 -0
  172. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/nts.json +326 -0
  173. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/oc1.json +2799 -0
  174. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/piq.json +3419 -0
  175. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/rds.json +3736 -0
  176. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/ta10.json +5306 -0
  177. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/ta6.json +4533 -0
  178. package/keen-dewdney-6ae15b/src/schemas/v2/overlays/ta7.json +1045 -0
  179. package/keen-dewdney-6ae15b/src/schemas/v2/pdtf-transaction.json +34351 -0
  180. package/keen-dewdney-6ae15b/src/schemas/v2/skeleton.json +3973 -0
  181. package/keen-dewdney-6ae15b/src/schemas/v3/combined.json +41720 -0
  182. package/keen-dewdney-6ae15b/src/schemas/v3/compactSkeleton.txt +3325 -0
  183. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/README.md +299 -0
  184. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/baspi4.json +7872 -0
  185. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/baspi5.json +8019 -0
  186. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/con29DW.json +716 -0
  187. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/con29R.json +2981 -0
  188. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/as.json +72 -0
  189. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/dr.json +73 -0
  190. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/er.json +83 -0
  191. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/fd.json +72 -0
  192. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/hi.json +48 -0
  193. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/hs.json +71 -0
  194. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/jk.json +76 -0
  195. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/la.json +83 -0
  196. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/ma.json +87 -0
  197. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/mc.json +36 -0
  198. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/oa.json +22 -0
  199. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/oc.json +55 -0
  200. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/sb.json +71 -0
  201. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/sf.json +72 -0
  202. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/sl.json +66 -0
  203. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/extensions/tf.json +100 -0
  204. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/fme1.json +1264 -0
  205. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/llc1.json +25 -0
  206. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/lpe1.json +2226 -0
  207. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/nts.json +2090 -0
  208. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/nts2.json +2678 -0
  209. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ntsl.json +1746 -0
  210. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ntsl2.json +2153 -0
  211. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/oc1.json +2817 -0
  212. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/piq.json +3276 -0
  213. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/rds.json +3552 -0
  214. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/sr24.json +38 -0
  215. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ta10.json +4642 -0
  216. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ta6.json +4501 -0
  217. package/keen-dewdney-6ae15b/src/schemas/v3/overlays/ta7.json +1435 -0
  218. package/keen-dewdney-6ae15b/src/schemas/v3/pdtf-transaction.json +37225 -0
  219. package/keen-dewdney-6ae15b/src/schemas/v3/skeleton.json +4323 -0
  220. package/keen-dewdney-6ae15b/src/schemas/verifiedClaims/README.md +12 -0
  221. package/keen-dewdney-6ae15b/src/schemas/verifiedClaims/pdtf-verified-claims.json +431 -0
  222. package/keen-dewdney-6ae15b/src/tests/v3/caching.test.js +591 -0
  223. package/keen-dewdney-6ae15b/src/tests/v3/extensionOverlays.test.js +525 -0
  224. package/keen-dewdney-6ae15b/src/tests/v3/transactionSchema.test.js +574 -0
  225. package/keen-dewdney-6ae15b/src/tests/v3/verifiedClaimsValidator.test.js +128 -0
  226. package/keen-dewdney-6ae15b/src/utils/compactSkeleton.js +84 -0
  227. package/keen-dewdney-6ae15b/src/utils/countTokens.js +67 -0
  228. package/keen-dewdney-6ae15b/src/utils/extractExtensionOverlays.js +362 -0
  229. package/keen-dewdney-6ae15b/src/utils/extractOverlay.js +290 -0
  230. package/keen-dewdney-6ae15b/src/utils/extractProperties.js +44 -0
  231. package/keen-dewdney-6ae15b/src/utils/listPathTitles.js +36 -0
  232. package/keen-dewdney-6ae15b/src/utils/minimalSkeleton.js +85 -0
  233. package/keen-dewdney-6ae15b/src/utils/pathList.csv +903 -0
  234. package/keen-dewdney-6ae15b/src/utils/pathSkeleton.js +181 -0
  235. package/package.json +1 -1
  236. package/src/schemas/v3/combined.json +8 -15
  237. package/src/schemas/v3/overlays/baspi4.json +12 -7
  238. package/src/schemas/v3/overlays/baspi5.json +12 -7
  239. package/src/schemas/v3/overlays/extensions/ac.json +2 -1
  240. package/src/schemas/v3/overlays/extensions/dk.json +3 -2
  241. package/src/schemas/v3/overlays/extensions/ic.json +2 -1
  242. package/src/schemas/v3/overlays/extensions/lc.json +3 -2
  243. package/src/schemas/v3/overlays/extensions/mi.json +2 -1
  244. package/src/schemas/v3/overlays/extensions/nd.json +3 -2
  245. package/src/schemas/v3/overlays/extensions/pc.json +3 -2
  246. package/src/schemas/v3/overlays/extensions/ph.json +2 -1
  247. package/src/schemas/v3/overlays/extensions/rw.json +4 -3
  248. package/src/schemas/v3/overlays/extensions/sc.json +8 -4
  249. package/src/schemas/v3/overlays/extensions/sd.json +3 -2
  250. package/src/schemas/v3/overlays/extensions/tr.json +3 -2
  251. package/src/schemas/v3/overlays/extensions/wg.json +2 -1
  252. package/src/schemas/v3/overlays/lpe1.json +1 -1
  253. package/src/schemas/v3/overlays/nts.json +3 -1
  254. package/src/schemas/v3/overlays/nts2.json +3 -1
  255. package/src/schemas/v3/overlays/ntsl.json +3 -1
  256. package/src/schemas/v3/overlays/ntsl2.json +3 -1
  257. package/src/schemas/v3/overlays/piq.json +7 -5
  258. package/src/schemas/v3/overlays/rds.json +9 -6
  259. package/src/schemas/v3/overlays/ta10.json +0 -9
  260. package/src/schemas/v3/overlays/ta6.json +8 -4
  261. package/src/schemas/v3/overlays/ta6ed6.json +4 -2
  262. package/src/schemas/v3/pdtf-transaction.json +15 -18
  263. package/src/utils/extractExtensionOverlays.js +10 -1
@@ -0,0 +1,181 @@
1
+ const fs = require("fs");
2
+ const traverse = require("traverse");
3
+
4
+ const combinedSchema = require("../schemas/v3/combined.json");
5
+
6
+ // Extract fields that have overlay-specific properties
7
+ const extractFields = [
8
+ "baspi4", "baspi5", "nts", "nts2", "ntsl", "ntsl2",
9
+ "ta6", "ta7", "ta7ed5", "ta10", "lpe1", "fme1", "piq",
10
+ "con29R", "con29DW", "llc1", "rds", "oc1", "sr24",
11
+ ];
12
+
13
+ // Delete properties we don't want in the skeleton
14
+ const deleteProperties = (sourceSchema, propertyNames) => {
15
+ traverse(sourceSchema).forEach(function (element) {
16
+ if (propertyNames.includes(this.key)) {
17
+ this.delete(true);
18
+ }
19
+ });
20
+ return sourceSchema;
21
+ };
22
+
23
+ // Collect all paths in path notation
24
+ const collectPaths = (schema, currentPath = "") => {
25
+ const paths = [];
26
+
27
+ if (!schema || typeof schema !== 'object') {
28
+ return paths;
29
+ }
30
+
31
+ // Handle arrays
32
+ if (schema.type === "array" && schema.items) {
33
+ const arrayPath = currentPath + "[]";
34
+ paths.push(arrayPath);
35
+ // Continue with items
36
+ const itemPaths = collectPaths(schema.items, arrayPath);
37
+ paths.push(...itemPaths);
38
+ return paths;
39
+ }
40
+
41
+ // Handle primitives - add type suffix
42
+ if (schema.type && !schema.properties && !schema.oneOf && !schema.items) {
43
+ let typeChar = "";
44
+ switch(schema.type) {
45
+ case "string": typeChar = ":s"; break;
46
+ case "number": typeChar = ":n"; break;
47
+ case "integer": typeChar = ":i"; break;
48
+ case "boolean": typeChar = ":b"; break;
49
+ default: typeChar = "";
50
+ }
51
+ if (currentPath) {
52
+ paths.push(currentPath + typeChar);
53
+ }
54
+ return paths;
55
+ }
56
+
57
+ // Handle objects with properties
58
+ if (schema.properties) {
59
+ // If this is an object without a path yet, don't add it
60
+ if (currentPath && !schema.type?.includes("array")) {
61
+ paths.push(currentPath);
62
+ }
63
+
64
+ Object.keys(schema.properties).forEach((propName) => {
65
+ const newPath = currentPath ? `${currentPath}.${propName}` : propName;
66
+ const propPaths = collectPaths(schema.properties[propName], newPath);
67
+ paths.push(...propPaths);
68
+ });
69
+ }
70
+
71
+ // Handle oneOf - collect all possible properties
72
+ if (schema.oneOf) {
73
+ const variantProps = new Set();
74
+ schema.oneOf.forEach((oneOfSchema) => {
75
+ if (oneOfSchema.properties) {
76
+ Object.keys(oneOfSchema.properties).forEach((propName) => {
77
+ variantProps.add(propName);
78
+ });
79
+ }
80
+ });
81
+
82
+ // Process each unique property
83
+ variantProps.forEach((propName) => {
84
+ const newPath = currentPath ? `${currentPath}.${propName}` : propName;
85
+ // Check if all variants have the same type
86
+ let commonType = null;
87
+ let isVariant = false;
88
+
89
+ schema.oneOf.forEach((oneOfSchema) => {
90
+ if (oneOfSchema.properties && oneOfSchema.properties[propName]) {
91
+ const propType = oneOfSchema.properties[propName].type;
92
+ if (commonType === null) {
93
+ commonType = propType;
94
+ } else if (commonType !== propType) {
95
+ isVariant = true;
96
+ }
97
+ }
98
+ });
99
+
100
+ if (isVariant || !commonType) {
101
+ paths.push(newPath + ":v"); // variant
102
+ } else {
103
+ // Process the first variant's version of this property
104
+ for (const oneOfSchema of schema.oneOf) {
105
+ if (oneOfSchema.properties && oneOfSchema.properties[propName]) {
106
+ const propPaths = collectPaths(oneOfSchema.properties[propName], newPath);
107
+ paths.push(...propPaths);
108
+ break;
109
+ }
110
+ }
111
+ }
112
+ });
113
+ }
114
+
115
+ // Empty objects
116
+ if (currentPath && !schema.properties && !schema.oneOf && !schema.items && !schema.type) {
117
+ paths.push(currentPath);
118
+ }
119
+
120
+ return paths;
121
+ };
122
+
123
+ // Remove duplicates
124
+ const deduplicatePaths = (paths) => {
125
+ return [...new Set(paths)];
126
+ };
127
+
128
+ // Sort paths for readability
129
+ const sortPaths = (paths) => {
130
+ return paths.sort((a, b) => {
131
+ // Sort by depth first (fewer dots = higher up)
132
+ const depthA = (a.match(/\./g) || []).length;
133
+ const depthB = (b.match(/\./g) || []).length;
134
+ if (depthA !== depthB) return depthA - depthB;
135
+
136
+ // Then alphabetically
137
+ return a.localeCompare(b);
138
+ });
139
+ };
140
+
141
+ // Create clean schema
142
+ const coreSchema = deleteProperties(JSON.parse(JSON.stringify(combinedSchema)), [
143
+ "discriminator",
144
+ ...extractFields.map((item) => `${item}Ref`),
145
+ ...extractFields.map((item) => `${item}Required`),
146
+ ...extractFields.map((item) => `${item}Title`),
147
+ ...extractFields.map((item) => `${item}Description`),
148
+ ...extractFields.map((item) => `${item}Enum`),
149
+ ]);
150
+
151
+ // Remove metadata
152
+ const skeletonSchema = deleteProperties(coreSchema, [
153
+ "$schema", "$id", "title", "description", "required",
154
+ "enum", "minItems", "minLength", "format", "minimum", "maximum",
155
+ ]);
156
+
157
+ // Collect paths
158
+ const allPaths = collectPaths(skeletonSchema);
159
+ const uniquePaths = deduplicatePaths(allPaths);
160
+ const sortedPaths = sortPaths(uniquePaths);
161
+
162
+ // Write as text file
163
+ const pathContent = sortedPaths.join('\n');
164
+ fs.writeFileSync("../schemas/v3/pathSkeleton.txt", pathContent);
165
+
166
+ // Also create a JSON version for comparison
167
+ fs.writeFileSync("../schemas/v3/pathSkeleton.json", JSON.stringify(sortedPaths, null, 2));
168
+
169
+ console.log(`Path skeleton written to ../schemas/v3/pathSkeleton.txt`);
170
+ console.log(`Total paths: ${sortedPaths.length}`);
171
+ console.log(`Text size: ${pathContent.length} bytes`);
172
+
173
+ // Count tokens
174
+ try {
175
+ const GPT3Encoder = require('gpt-3-encoder');
176
+ const encoded = GPT3Encoder.encode(pathContent);
177
+ console.log(`Tokens (GPT-3): ${encoded.length}`);
178
+ console.log(`Reduction: ${((1 - encoded.length / 78734) * 100).toFixed(1)}% fewer tokens than JSON skeleton`);
179
+ } catch (e) {
180
+ console.log(`Estimated tokens: ~${Math.ceil(pathContent.length / 4)}`);
181
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Property Data Trust Framework
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,334 @@
1
+ # PDTF Schemas
2
+
3
+ [![npm version](https://badge.fury.io/js/%40pdtf%2Fschemas.svg)](https://badge.fury.io/js/%40pdtf%2Fschemas)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ The Property Data Trust Framework (PDTF) Schemas provide standardized JSON Schema definitions for digital residential property data exchange in England and Wales. This package enables frictionless property data exchange between software products and services while maintaining trusted information about data provenance.
7
+
8
+ ## Project Goals & Status
9
+
10
+ **Current Version:** 3.4.0 (Schema v3 - Stable)
11
+
12
+ This schema framework aims to support the [Home Buying and Selling Group](https://homebuyingandsellinggroup.co.uk) 'Property Pack' initiative, encompassing all requirements starting with the Buyers and Sellers Property Information set ([BASPI v4.0](https://homebuyingandsellinggroup.co.uk/baspi/)).
13
+
14
+ **Key Objectives:**
15
+ - 🏠 **Standardize** residential property data exchange across England and Wales
16
+ - 🔗 **Enable** frictionless data sharing between software products and services
17
+ - 🛡️ **Maintain** trusted information about data provenance and verification
18
+ - 📋 **Support** industry-standard forms (BASPI, NTS, Law Society TA forms)
19
+ - 🧩 **Provide** modular components for flexible implementation
20
+
21
+ **Related Projects:**
22
+ - [API Specifications](https://github.com/Property-Data-Trust-Framework/api) - OpenAPI specs for data exchange protocols
23
+ - [PDTF Website](https://trust.propdata.org.uk) - Official framework documentation
24
+
25
+ This repository is a living document, with schemas evolving as framework requirements are refined and extended. Semantic versioning ensures backward compatibility while enabling schema evolution.
26
+
27
+ ## Quick Start
28
+
29
+ ### Installation
30
+
31
+ ```bash
32
+ npm install @pdtf/schemas
33
+ ```
34
+
35
+ ### Basic Usage
36
+
37
+ ```javascript
38
+ const { getTransactionSchema, getValidator } = require('@pdtf/schemas');
39
+
40
+ // Get a schema with BASPI v5 overlay
41
+ const schema = getTransactionSchema(
42
+ "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json",
43
+ ["baspiV5"]
44
+ );
45
+
46
+ // Create a validator
47
+ const validator = getValidator(
48
+ "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json",
49
+ ["baspiV5"]
50
+ );
51
+
52
+ // Validate data
53
+ const isValid = validator(propertyData);
54
+ if (!isValid) {
55
+ console.log('Validation errors:', validator.errors);
56
+ }
57
+ ```
58
+
59
+ ## Features
60
+
61
+ - **🏗️ Modular Schema System** - Base schemas with flexible overlay composition
62
+ - **📋 Multiple Form Support** - BASPI, NTS, Law Society TA forms, and more
63
+ - **🧩 Extension Overlays** - Granular NTS2 features as individual modules
64
+ - **✅ JSON Schema Validation** - Full JSON Schema Draft 07 support with AJV
65
+ - **🔗 Verified Claims** - Support for verified data provenance tracking
66
+ - **📚 Comprehensive Documentation** - Detailed usage guides and examples
67
+
68
+ ## Package Structure
69
+
70
+ ```
71
+ @pdtf/schemas/
72
+ ├── src/
73
+ │ ├── schemas/
74
+ │ │ ├── v3/ # Current schema version
75
+ │ │ │ ├── pdtf-transaction.json # Base transaction schema
76
+ │ │ │ ├── overlays/ # Form-specific overlays
77
+ │ │ │ │ ├── baspi5.json # BASPI v5 overlay
78
+ │ │ │ │ ├── nts.json # National Trading Standards
79
+ │ │ │ │ ├── ta6.json # Law Society forms
80
+ │ │ │ │ └── extensions/ # Modular NTS2 extensions
81
+ │ │ │ │ ├── jk.json # Japanese Knotweed
82
+ │ │ │ │ ├── tf.json # Transfer Fees
83
+ │ │ │ │ └── ... # 16 total extensions
84
+ │ │ │ └── combined.json # Master schema for generation
85
+ │ │ ├── v2/ # Legacy schema version
86
+ │ │ ├── verifiedClaims/ # Verified claims schemas
87
+ │ │ └── examples/ # Example data files
88
+ │ ├── tests/ # Jest test suite
89
+ │ └── utils/ # Build and extraction tools
90
+ ├── index.js # Main API entry point
91
+ └── package.json
92
+ ```
93
+
94
+ ## Core Concepts
95
+
96
+ ### Base Schema + Overlays
97
+
98
+ PDTF uses a **base transaction schema** combined with **overlays** to create form-specific schemas:
99
+
100
+ - **Base Schema**: Core property transaction structure
101
+ - **Overlays**: Form-specific fields, references, and validation rules
102
+ - **Extensions**: Modular components for selective feature adoption
103
+
104
+ ### Schema Versions
105
+
106
+ - **v3** (Current): Full feature set with extension support
107
+ - **v2** (Legacy): Maintained for backward compatibility
108
+
109
+ ## API Reference
110
+
111
+ ### Core Functions
112
+
113
+ #### `getTransactionSchema(schemaId, overlays)`
114
+
115
+ Creates a merged schema from base schema and overlays.
116
+
117
+ ```javascript
118
+ const schema = getTransactionSchema(
119
+ "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json",
120
+ ["baspiV5", "ta6ed4"]
121
+ );
122
+ ```
123
+
124
+ **Parameters:**
125
+ - `schemaId` (string): Schema version URL
126
+ - `overlays` (array): Array of overlay names or objects
127
+
128
+ #### `getValidator(schemaId, overlays)`
129
+
130
+ Returns an AJV validator function for the specified schema combination.
131
+
132
+ ```javascript
133
+ const validator = getValidator(schemaId, ["baspiV5"]);
134
+ const isValid = validator(data);
135
+ ```
136
+
137
+ #### `validateVerifiedClaims(claims, schemaId, overlays)`
138
+
139
+ Validates verified claims against schema paths.
140
+
141
+ ```javascript
142
+ const errors = validateVerifiedClaims(verifiedClaims, schemaId, ["nts2023"]);
143
+ ```
144
+
145
+ ### Available Overlays
146
+
147
+ #### Main Form Overlays
148
+
149
+ | Overlay | Description | Version |
150
+ |---------|-------------|---------|
151
+ | `baspiV4` | Buyers and Sellers Property Information | v4.0 |
152
+ | `baspiV5` | Buyers and Sellers Property Information | v5.0 |
153
+ | `nts2023` | National Trading Standards | 2023 |
154
+ | `nts2025` | National Trading Standards | 2025 |
155
+ | `ta6ed4` | Law Society Property Information Form | Edition 4 |
156
+ | `ta7ed3` | Law Society Leasehold Information Form | Edition 3 |
157
+ | `ta10ed3` | Law Society Fittings and Contents Form | Edition 3 |
158
+
159
+ [View all overlays →](src/schemas/v3/overlays/README.md)
160
+
161
+ #### Extension Overlays
162
+
163
+ Modular NTS2 features for selective adoption:
164
+
165
+ ```javascript
166
+ // Individual extensions
167
+ const schema = getTransactionSchema(schemaId, ["nts2023", "jk", "tf"]);
168
+
169
+ // Multiple specialist issues
170
+ const schema = getTransactionSchema(schemaId, ["nts2023", "as", "dr", "jk", "sb"]);
171
+ ```
172
+
173
+ | Extension | Code | Description |
174
+ |-----------|------|-------------|
175
+ | Japanese Knotweed | `jk` | Knotweed presence and management |
176
+ | Transfer Fees | `tf` | Additional leasehold fees |
177
+ | Managing Agent | `ma` | Leasehold managing agent details |
178
+ | Solar Panels | `sl` | Solar panel ownership details |
179
+ | Asbestos | `as` | Asbestos presence and management |
180
+
181
+ [View all extensions →](src/schemas/v3/overlays/README.md#extension-overlays)
182
+
183
+ ## Usage Examples
184
+
185
+ ### Form-Specific Schemas
186
+
187
+ ```javascript
188
+ // BASPI v5 for estate agents
189
+ const baspiSchema = getTransactionSchema(schemaId, ["baspiV5"]);
190
+
191
+ // Law Society conveyancing forms
192
+ const legalSchema = getTransactionSchema(schemaId, ["ta6ed4", "ta7ed3"]);
193
+
194
+ // National Trading Standards compliance
195
+ const ntsSchema = getTransactionSchema(schemaId, ["nts2023"]);
196
+ ```
197
+
198
+ ### Modular NTS2 Features
199
+
200
+ ```javascript
201
+ // Selective NTS2 adoption
202
+ const partialNts2 = getTransactionSchema(schemaId, [
203
+ "nts2023", // Base NTS
204
+ "jk", // Japanese Knotweed
205
+ "tf", // Transfer Fees
206
+ "ma" // Managing Agent
207
+ ]);
208
+
209
+ // Full specialist issues
210
+ const specialistIssues = getTransactionSchema(schemaId, [
211
+ "nts2023", "as", "dr", "jk", "sb", "hs"
212
+ ]);
213
+ ```
214
+
215
+ ### Data Validation
216
+
217
+ ```javascript
218
+ const { getValidator } = require('@pdtf/schemas');
219
+
220
+ const validator = getValidator(schemaId, ["baspiV5"]);
221
+
222
+ const propertyData = {
223
+ propertyPack: {
224
+ priceInformation: {
225
+ price: 350000,
226
+ priceQualifier: "Freehold"
227
+ },
228
+ // ... more property data
229
+ }
230
+ };
231
+
232
+ if (validator(propertyData)) {
233
+ console.log('✅ Data is valid');
234
+ } else {
235
+ console.log('❌ Validation errors:', validator.errors);
236
+ }
237
+ ```
238
+
239
+ ### Verified Claims & Data Provenance
240
+
241
+ PDTF supports verified claims to maintain data provenance and trust throughout property transactions. Claims package specific property data with verification evidence, enabling traceability back to authoritative sources.
242
+
243
+ ```javascript
244
+ const { validateVerifiedClaims } = require('@pdtf/schemas');
245
+
246
+ // Current verified claims format
247
+ const verifiedClaims = [{
248
+ id: "claim-12345",
249
+ transactionId: "txn-67890",
250
+ schemaVersion: "3.4.0",
251
+ verification: {
252
+ trust_framework: "uk_pdtf",
253
+ time: "2024-07-01T10:30:00Z",
254
+ evidence: [{
255
+ type: "vouch",
256
+ attestation: {
257
+ type: "digital_attestation",
258
+ voucher: { name: "Estate Agent Ltd" }
259
+ },
260
+ verification_method: { type: "auth" }
261
+ }]
262
+ },
263
+ claims: {
264
+ "/propertyPack/priceInformation/price": 350000,
265
+ "/propertyPack/energyEfficiency/epcRating": "C"
266
+ }
267
+ }];
268
+
269
+ // Validate claims against schema
270
+ const errors = validateVerifiedClaims(verifiedClaims, schemaId, ["baspiV5"]);
271
+ if (errors.length === 0) {
272
+ console.log('✅ Verified claims are valid');
273
+ }
274
+ ```
275
+
276
+ **Key Features:**
277
+ - **Schema Path Validation** - Claims reference specific schema paths (e.g., `/propertyPack/priceInformation/price`)
278
+ - **Provenance Tracking** - Each claim includes verification evidence and source attribution
279
+ - **Trust Framework Integration** - Claims operate within the UK PDTF trust framework
280
+ - **Attachment Support** - Supporting documents can be cryptographically linked to claims
281
+
282
+ **Roadmap - W3C Verifiable Credentials:**
283
+ The next version of the PDTF framework will migrate to [W3C Verifiable Credentials](https://www.w3.org/TR/vc-data-model/) to provide:
284
+ - **Enhanced Security** - Cryptographically signed claims with tamper detection
285
+ - **Granular Permissions** - Fine-grained access control over claim data
286
+ - **Interoperability** - Standards-based approach for broader ecosystem compatibility
287
+ - **Selective Disclosure** - Share only necessary claim data for each transaction context
288
+
289
+ ## Development
290
+
291
+ ### Building Schemas
292
+
293
+ Schemas are generated from a master `combined.json` file:
294
+
295
+ ```bash
296
+ # Extract overlays and base schema
297
+ node src/utils/extractOverlay.js
298
+
299
+ # Generate extension overlays
300
+ node src/utils/extractExtensionOverlays.js
301
+ ```
302
+
303
+ ### Testing
304
+
305
+ ```bash
306
+ # Run all tests
307
+ npm test
308
+
309
+ # Test specific functionality
310
+ npm test -- --testPathPattern=extensionOverlays
311
+ npm test -- --testPathPattern=transactionSchema
312
+ ```
313
+
314
+
315
+ ## Versioning
316
+
317
+ The schema follows semantic versioning:
318
+ - **Patch** (3.4.x): Bug fixes, no breaking changes
319
+ - **Minor** (3.x.0): New fields, backward compatible
320
+ - **Major** (x.0.0): Breaking changes, migration required
321
+
322
+ ## Licensing
323
+
324
+ Licensed under the [MIT License](https://opensource.org/licenses/MIT).
325
+
326
+ **Important:** Overlays contain fields from licensed forms ([BASPI](https://homebuyingsellingcouncil.co.uk/wp-content/uploads/2021/03/Terms-of-Licence-mandatory-download-for-use-of-BASPI.pdf), [PIQ](https://www.propertymark.co.uk/static/14e7c154-98de-4230-957f09bd8d5ddeec/f542b10a-7710-4c37-b3958ccaeec25d4b/property-information-questionnaire-residential-sales.pdf), [Law Society TA](https://www.lawsociety.org.uk/topics/property/transaction-forms)). When rendering data into these forms, ensure compliance with their respective license terms.
327
+
328
+ ## Support
329
+
330
+ - 📖 [Overlay Documentation](src/schemas/v3/overlays/README.md)
331
+ - 📁 [Example Files](src/examples/)
332
+ - 🐛 [Issue Tracker](https://github.com/Property-Data-Trust-Framework/schemas/issues)
333
+ - 🌐 [PDTF Website](https://trust.propdata.org.uk)
334
+