@vepler/sdk 6.1.0 → 6.8.0

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 (188) hide show
  1. package/dist/commonjs/lib/config.d.ts +3 -3
  2. package/dist/commonjs/lib/config.js +3 -3
  3. package/dist/commonjs/lib/config.js.map +1 -1
  4. package/dist/commonjs/sdk/models/operations/resolveaddress.d.ts +24 -0
  5. package/dist/commonjs/sdk/models/operations/resolveaddress.d.ts.map +1 -1
  6. package/dist/commonjs/sdk/models/operations/resolveaddress.js +12 -1
  7. package/dist/commonjs/sdk/models/operations/resolveaddress.js.map +1 -1
  8. package/dist/commonjs/sdk/models/shared/addressresolverequest.d.ts +5 -0
  9. package/dist/commonjs/sdk/models/shared/addressresolverequest.d.ts.map +1 -1
  10. package/dist/commonjs/sdk/models/shared/addressresolverequest.js +1 -0
  11. package/dist/commonjs/sdk/models/shared/addressresolverequest.js.map +1 -1
  12. package/dist/commonjs/sdk/models/shared/imagecondition.d.ts +18 -0
  13. package/dist/commonjs/sdk/models/shared/imagecondition.d.ts.map +1 -0
  14. package/dist/commonjs/sdk/models/shared/imagecondition.js +52 -0
  15. package/dist/commonjs/sdk/models/shared/imagecondition.js.map +1 -0
  16. package/dist/commonjs/sdk/models/shared/imagedocumentclass.d.ts +22 -0
  17. package/dist/commonjs/sdk/models/shared/imagedocumentclass.d.ts.map +1 -0
  18. package/dist/commonjs/sdk/models/shared/imagedocumentclass.js +56 -0
  19. package/dist/commonjs/sdk/models/shared/imagedocumentclass.js.map +1 -0
  20. package/dist/commonjs/sdk/models/shared/imagequality.d.ts +12 -0
  21. package/dist/commonjs/sdk/models/shared/imagequality.d.ts.map +1 -0
  22. package/dist/commonjs/sdk/models/shared/imagequality.js +49 -0
  23. package/dist/commonjs/sdk/models/shared/imagequality.js.map +1 -0
  24. package/dist/commonjs/sdk/models/shared/imagescene.d.ts +62 -0
  25. package/dist/commonjs/sdk/models/shared/imagescene.d.ts.map +1 -0
  26. package/dist/commonjs/sdk/models/shared/imagescene.js +96 -0
  27. package/dist/commonjs/sdk/models/shared/imagescene.js.map +1 -0
  28. package/dist/commonjs/sdk/models/shared/imagescenelabel.d.ts +18 -0
  29. package/dist/commonjs/sdk/models/shared/imagescenelabel.d.ts.map +1 -0
  30. package/dist/commonjs/sdk/models/shared/imagescenelabel.js +52 -0
  31. package/dist/commonjs/sdk/models/shared/imagescenelabel.js.map +1 -0
  32. package/dist/commonjs/sdk/models/shared/index.d.ts +8 -0
  33. package/dist/commonjs/sdk/models/shared/index.d.ts.map +1 -1
  34. package/dist/commonjs/sdk/models/shared/index.js +8 -0
  35. package/dist/commonjs/sdk/models/shared/index.js.map +1 -1
  36. package/dist/commonjs/sdk/models/shared/listing.d.ts +118 -0
  37. package/dist/commonjs/sdk/models/shared/listing.d.ts.map +1 -1
  38. package/dist/commonjs/sdk/models/shared/listing.js +148 -1
  39. package/dist/commonjs/sdk/models/shared/listing.js.map +1 -1
  40. package/dist/commonjs/sdk/models/shared/listingimage.d.ts +52 -0
  41. package/dist/commonjs/sdk/models/shared/listingimage.d.ts.map +1 -1
  42. package/dist/commonjs/sdk/models/shared/listingimage.js +31 -1
  43. package/dist/commonjs/sdk/models/shared/listingimage.js.map +1 -1
  44. package/dist/commonjs/sdk/models/shared/mortgagecharge.d.ts +4 -0
  45. package/dist/commonjs/sdk/models/shared/mortgagecharge.d.ts.map +1 -1
  46. package/dist/commonjs/sdk/models/shared/mortgagecharge.js +1 -0
  47. package/dist/commonjs/sdk/models/shared/mortgagecharge.js.map +1 -1
  48. package/dist/commonjs/sdk/models/shared/observedfeature.d.ts +21 -0
  49. package/dist/commonjs/sdk/models/shared/observedfeature.d.ts.map +1 -0
  50. package/dist/commonjs/sdk/models/shared/observedfeature.js +52 -0
  51. package/dist/commonjs/sdk/models/shared/observedfeature.js.map +1 -0
  52. package/dist/commonjs/sdk/models/shared/othercharge.d.ts +8 -1
  53. package/dist/commonjs/sdk/models/shared/othercharge.d.ts.map +1 -1
  54. package/dist/commonjs/sdk/models/shared/othercharge.js +1 -0
  55. package/dist/commonjs/sdk/models/shared/othercharge.js.map +1 -1
  56. package/dist/commonjs/sdk/models/shared/titlecovenant.d.ts +7 -0
  57. package/dist/commonjs/sdk/models/shared/titlecovenant.d.ts.map +1 -1
  58. package/dist/commonjs/sdk/models/shared/titlecovenant.js +1 -0
  59. package/dist/commonjs/sdk/models/shared/titlecovenant.js.map +1 -1
  60. package/dist/commonjs/sdk/models/shared/titleextractionpayload.d.ts +14 -1
  61. package/dist/commonjs/sdk/models/shared/titleextractionpayload.d.ts.map +1 -1
  62. package/dist/commonjs/sdk/models/shared/titleextractionpayload.js +4 -0
  63. package/dist/commonjs/sdk/models/shared/titleextractionpayload.js.map +1 -1
  64. package/dist/commonjs/sdk/models/shared/titlenotice.d.ts +7 -0
  65. package/dist/commonjs/sdk/models/shared/titlenotice.d.ts.map +1 -1
  66. package/dist/commonjs/sdk/models/shared/titlenotice.js +1 -0
  67. package/dist/commonjs/sdk/models/shared/titlenotice.js.map +1 -1
  68. package/dist/commonjs/sdk/models/shared/titlepricepaid.d.ts +29 -0
  69. package/dist/commonjs/sdk/models/shared/titlepricepaid.d.ts.map +1 -0
  70. package/dist/commonjs/sdk/models/shared/titlepricepaid.js +54 -0
  71. package/dist/commonjs/sdk/models/shared/titlepricepaid.js.map +1 -0
  72. package/dist/commonjs/sdk/models/shared/titlepropertyright.d.ts +50 -0
  73. package/dist/commonjs/sdk/models/shared/titlepropertyright.d.ts.map +1 -0
  74. package/dist/commonjs/sdk/models/shared/titlepropertyright.js +68 -0
  75. package/dist/commonjs/sdk/models/shared/titlepropertyright.js.map +1 -0
  76. package/dist/commonjs/sdk/models/shared/titlerestriction.d.ts +7 -0
  77. package/dist/commonjs/sdk/models/shared/titlerestriction.d.ts.map +1 -1
  78. package/dist/commonjs/sdk/models/shared/titlerestriction.js +1 -0
  79. package/dist/commonjs/sdk/models/shared/titlerestriction.js.map +1 -1
  80. package/dist/commonjs/sdk/models/shared/titlesummarycounts.d.ts +1 -0
  81. package/dist/commonjs/sdk/models/shared/titlesummarycounts.d.ts.map +1 -1
  82. package/dist/commonjs/sdk/models/shared/titlesummarycounts.js +1 -0
  83. package/dist/commonjs/sdk/models/shared/titlesummarycounts.js.map +1 -1
  84. package/dist/esm/lib/config.d.ts +3 -3
  85. package/dist/esm/lib/config.js +3 -3
  86. package/dist/esm/lib/config.js.map +1 -1
  87. package/dist/esm/sdk/models/operations/resolveaddress.d.ts +24 -0
  88. package/dist/esm/sdk/models/operations/resolveaddress.d.ts.map +1 -1
  89. package/dist/esm/sdk/models/operations/resolveaddress.js +10 -0
  90. package/dist/esm/sdk/models/operations/resolveaddress.js.map +1 -1
  91. package/dist/esm/sdk/models/shared/addressresolverequest.d.ts +5 -0
  92. package/dist/esm/sdk/models/shared/addressresolverequest.d.ts.map +1 -1
  93. package/dist/esm/sdk/models/shared/addressresolverequest.js +1 -0
  94. package/dist/esm/sdk/models/shared/addressresolverequest.js.map +1 -1
  95. package/dist/esm/sdk/models/shared/imagecondition.d.ts +18 -0
  96. package/dist/esm/sdk/models/shared/imagecondition.d.ts.map +1 -0
  97. package/dist/esm/sdk/models/shared/imagecondition.js +16 -0
  98. package/dist/esm/sdk/models/shared/imagecondition.js.map +1 -0
  99. package/dist/esm/sdk/models/shared/imagedocumentclass.d.ts +22 -0
  100. package/dist/esm/sdk/models/shared/imagedocumentclass.d.ts.map +1 -0
  101. package/dist/esm/sdk/models/shared/imagedocumentclass.js +20 -0
  102. package/dist/esm/sdk/models/shared/imagedocumentclass.js.map +1 -0
  103. package/dist/esm/sdk/models/shared/imagequality.d.ts +12 -0
  104. package/dist/esm/sdk/models/shared/imagequality.d.ts.map +1 -0
  105. package/dist/esm/sdk/models/shared/imagequality.js +13 -0
  106. package/dist/esm/sdk/models/shared/imagequality.js.map +1 -0
  107. package/dist/esm/sdk/models/shared/imagescene.d.ts +62 -0
  108. package/dist/esm/sdk/models/shared/imagescene.d.ts.map +1 -0
  109. package/dist/esm/sdk/models/shared/imagescene.js +60 -0
  110. package/dist/esm/sdk/models/shared/imagescene.js.map +1 -0
  111. package/dist/esm/sdk/models/shared/imagescenelabel.d.ts +18 -0
  112. package/dist/esm/sdk/models/shared/imagescenelabel.d.ts.map +1 -0
  113. package/dist/esm/sdk/models/shared/imagescenelabel.js +15 -0
  114. package/dist/esm/sdk/models/shared/imagescenelabel.js.map +1 -0
  115. package/dist/esm/sdk/models/shared/index.d.ts +8 -0
  116. package/dist/esm/sdk/models/shared/index.d.ts.map +1 -1
  117. package/dist/esm/sdk/models/shared/index.js +8 -0
  118. package/dist/esm/sdk/models/shared/index.js.map +1 -1
  119. package/dist/esm/sdk/models/shared/listing.d.ts +118 -0
  120. package/dist/esm/sdk/models/shared/listing.d.ts.map +1 -1
  121. package/dist/esm/sdk/models/shared/listing.js +143 -0
  122. package/dist/esm/sdk/models/shared/listing.js.map +1 -1
  123. package/dist/esm/sdk/models/shared/listingimage.d.ts +52 -0
  124. package/dist/esm/sdk/models/shared/listingimage.d.ts.map +1 -1
  125. package/dist/esm/sdk/models/shared/listingimage.js +29 -0
  126. package/dist/esm/sdk/models/shared/listingimage.js.map +1 -1
  127. package/dist/esm/sdk/models/shared/mortgagecharge.d.ts +4 -0
  128. package/dist/esm/sdk/models/shared/mortgagecharge.d.ts.map +1 -1
  129. package/dist/esm/sdk/models/shared/mortgagecharge.js +1 -0
  130. package/dist/esm/sdk/models/shared/mortgagecharge.js.map +1 -1
  131. package/dist/esm/sdk/models/shared/observedfeature.d.ts +21 -0
  132. package/dist/esm/sdk/models/shared/observedfeature.d.ts.map +1 -0
  133. package/dist/esm/sdk/models/shared/observedfeature.js +15 -0
  134. package/dist/esm/sdk/models/shared/observedfeature.js.map +1 -0
  135. package/dist/esm/sdk/models/shared/othercharge.d.ts +8 -1
  136. package/dist/esm/sdk/models/shared/othercharge.d.ts.map +1 -1
  137. package/dist/esm/sdk/models/shared/othercharge.js +1 -0
  138. package/dist/esm/sdk/models/shared/othercharge.js.map +1 -1
  139. package/dist/esm/sdk/models/shared/titlecovenant.d.ts +7 -0
  140. package/dist/esm/sdk/models/shared/titlecovenant.d.ts.map +1 -1
  141. package/dist/esm/sdk/models/shared/titlecovenant.js +1 -0
  142. package/dist/esm/sdk/models/shared/titlecovenant.js.map +1 -1
  143. package/dist/esm/sdk/models/shared/titleextractionpayload.d.ts +14 -1
  144. package/dist/esm/sdk/models/shared/titleextractionpayload.d.ts.map +1 -1
  145. package/dist/esm/sdk/models/shared/titleextractionpayload.js +4 -0
  146. package/dist/esm/sdk/models/shared/titleextractionpayload.js.map +1 -1
  147. package/dist/esm/sdk/models/shared/titlenotice.d.ts +7 -0
  148. package/dist/esm/sdk/models/shared/titlenotice.d.ts.map +1 -1
  149. package/dist/esm/sdk/models/shared/titlenotice.js +1 -0
  150. package/dist/esm/sdk/models/shared/titlenotice.js.map +1 -1
  151. package/dist/esm/sdk/models/shared/titlepricepaid.d.ts +29 -0
  152. package/dist/esm/sdk/models/shared/titlepricepaid.d.ts.map +1 -0
  153. package/dist/esm/sdk/models/shared/titlepricepaid.js +17 -0
  154. package/dist/esm/sdk/models/shared/titlepricepaid.js.map +1 -0
  155. package/dist/esm/sdk/models/shared/titlepropertyright.d.ts +50 -0
  156. package/dist/esm/sdk/models/shared/titlepropertyright.d.ts.map +1 -0
  157. package/dist/esm/sdk/models/shared/titlepropertyright.js +31 -0
  158. package/dist/esm/sdk/models/shared/titlepropertyright.js.map +1 -0
  159. package/dist/esm/sdk/models/shared/titlerestriction.d.ts +7 -0
  160. package/dist/esm/sdk/models/shared/titlerestriction.d.ts.map +1 -1
  161. package/dist/esm/sdk/models/shared/titlerestriction.js +1 -0
  162. package/dist/esm/sdk/models/shared/titlerestriction.js.map +1 -1
  163. package/dist/esm/sdk/models/shared/titlesummarycounts.d.ts +1 -0
  164. package/dist/esm/sdk/models/shared/titlesummarycounts.d.ts.map +1 -1
  165. package/dist/esm/sdk/models/shared/titlesummarycounts.js +1 -0
  166. package/dist/esm/sdk/models/shared/titlesummarycounts.js.map +1 -1
  167. package/package.json +1 -1
  168. package/src/lib/config.ts +3 -3
  169. package/src/sdk/models/operations/resolveaddress.ts +44 -0
  170. package/src/sdk/models/shared/addressresolverequest.ts +6 -0
  171. package/src/sdk/models/shared/imagecondition.ts +28 -0
  172. package/src/sdk/models/shared/imagedocumentclass.ts +32 -0
  173. package/src/sdk/models/shared/imagequality.ts +22 -0
  174. package/src/sdk/models/shared/imagescene.ts +72 -0
  175. package/src/sdk/models/shared/imagescenelabel.ts +40 -0
  176. package/src/sdk/models/shared/index.ts +8 -0
  177. package/src/sdk/models/shared/listing.ts +301 -0
  178. package/src/sdk/models/shared/listingimage.ts +85 -0
  179. package/src/sdk/models/shared/mortgagecharge.ts +5 -0
  180. package/src/sdk/models/shared/observedfeature.ts +44 -0
  181. package/src/sdk/models/shared/othercharge.ts +9 -1
  182. package/src/sdk/models/shared/titlecovenant.ts +8 -0
  183. package/src/sdk/models/shared/titleextractionpayload.ts +22 -1
  184. package/src/sdk/models/shared/titlenotice.ts +8 -0
  185. package/src/sdk/models/shared/titlepricepaid.ts +54 -0
  186. package/src/sdk/models/shared/titlepropertyright.ts +81 -0
  187. package/src/sdk/models/shared/titlerestriction.ts +8 -0
  188. package/src/sdk/models/shared/titlesummarycounts.ts +2 -0
@@ -12,11 +12,19 @@ import * as openEnums from "../../types/enums.js";
12
12
  import { OpenEnum } from "../../types/enums.js";
13
13
  import { Result as SafeParseResult } from "../../types/fp.js";
14
14
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
15
+ import {
16
+ ImageCondition,
17
+ ImageCondition$inboundSchema,
18
+ } from "./imagecondition.js";
15
19
  import { ListingImage, ListingImage$inboundSchema } from "./listingimage.js";
16
20
  import {
17
21
  ListingPriceChange,
18
22
  ListingPriceChange$inboundSchema,
19
23
  } from "./listingpricechange.js";
24
+ import {
25
+ ObservedFeature,
26
+ ObservedFeature$inboundSchema,
27
+ } from "./observedfeature.js";
20
28
 
21
29
  /**
22
30
  * Features the listing advertises.
@@ -46,6 +54,110 @@ export type ListingFeatures = {
46
54
  additionalProperties?: { [k: string]: any } | undefined;
47
55
  };
48
56
 
57
+ /**
58
+ * The state of repair across the photographs as a whole. Null when too few photographs carry an assessment to summarise one.
59
+ */
60
+ export type ListingCondition = {
61
+ /**
62
+ * Confidence in that assessment, from 0 to 1.
63
+ */
64
+ confidence?: number | undefined;
65
+ /**
66
+ * The state of repair the photographs suggest.
67
+ */
68
+ value?: ImageCondition | undefined;
69
+ };
70
+
71
+ /**
72
+ * How the photographs present the property, keyed by quality key. `virtually_staged` is worth reading before treating condition as evidence, because digitally added furniture changes how a room reads.
73
+ */
74
+ export type Presentation = {
75
+ emptyRoom?: ObservedFeature | undefined;
76
+ furnished?: ObservedFeature | undefined;
77
+ virtuallyStaged?: ObservedFeature | undefined;
78
+ watermarkPresent?: ObservedFeature | undefined;
79
+ };
80
+
81
+ /**
82
+ * Spaces the photographs show, keyed by scene key, each with the evidence behind it. A key is absent when no photograph supports it, which is not the same as the property lacking that space.
83
+ */
84
+ export type Spaces = {
85
+ communal?: ObservedFeature | undefined;
86
+ communalCorridor?: ObservedFeature | undefined;
87
+ communalGarden?: ObservedFeature | undefined;
88
+ communalLobby?: ObservedFeature | undefined;
89
+ exterior?: ObservedFeature | undefined;
90
+ exteriorAerial?: ObservedFeature | undefined;
91
+ exteriorFrontElevation?: ObservedFeature | undefined;
92
+ exteriorRearElevation?: ObservedFeature | undefined;
93
+ exteriorStreet?: ObservedFeature | undefined;
94
+ interior?: ObservedFeature | undefined;
95
+ interiorAttic?: ObservedFeature | undefined;
96
+ interiorBasement?: ObservedFeature | undefined;
97
+ interiorBathroom?: ObservedFeature | undefined;
98
+ interiorBathroomCloakroom?: ObservedFeature | undefined;
99
+ interiorBathroomEnsuite?: ObservedFeature | undefined;
100
+ interiorBathroomShowerRoom?: ObservedFeature | undefined;
101
+ interiorBedroom?: ObservedFeature | undefined;
102
+ interiorConservatory?: ObservedFeature | undefined;
103
+ interiorDiningRoom?: ObservedFeature | undefined;
104
+ interiorDressingRoom?: ObservedFeature | undefined;
105
+ interiorGamesRoom?: ObservedFeature | undefined;
106
+ interiorGarageInterior?: ObservedFeature | undefined;
107
+ interiorGym?: ObservedFeature | undefined;
108
+ interiorHallway?: ObservedFeature | undefined;
109
+ interiorKitchen?: ObservedFeature | undefined;
110
+ interiorKitchenDiner?: ObservedFeature | undefined;
111
+ interiorKitchenLiving?: ObservedFeature | undefined;
112
+ interiorLanding?: ObservedFeature | undefined;
113
+ interiorLibrary?: ObservedFeature | undefined;
114
+ interiorLivingRoom?: ObservedFeature | undefined;
115
+ interiorPoolRoom?: ObservedFeature | undefined;
116
+ interiorPorch?: ObservedFeature | undefined;
117
+ interiorSauna?: ObservedFeature | undefined;
118
+ interiorStairs?: ObservedFeature | undefined;
119
+ interiorStorage?: ObservedFeature | undefined;
120
+ interiorStudy?: ObservedFeature | undefined;
121
+ interiorUtilityRoom?: ObservedFeature | undefined;
122
+ interiorWineCellar?: ObservedFeature | undefined;
123
+ interiorWorkshop?: ObservedFeature | undefined;
124
+ nonProperty?: ObservedFeature | undefined;
125
+ outdoorSpace?: ObservedFeature | undefined;
126
+ outdoorSpaceBalcony?: ObservedFeature | undefined;
127
+ outdoorSpaceDriveway?: ObservedFeature | undefined;
128
+ outdoorSpaceGarden?: ObservedFeature | undefined;
129
+ outdoorSpaceOutbuilding?: ObservedFeature | undefined;
130
+ outdoorSpacePatio?: ObservedFeature | undefined;
131
+ outdoorSpacePool?: ObservedFeature | undefined;
132
+ outdoorSpaceTerrace?: ObservedFeature | undefined;
133
+ };
134
+
135
+ /**
136
+ * What the listing's photographs show, as distinct from what its text advertises. Null until the gallery has been analysed.
137
+ */
138
+ export type ObservedFeatures = {
139
+ /**
140
+ * The state of repair across the photographs as a whole. Null when too few photographs carry an assessment to summarise one.
141
+ */
142
+ condition?: ListingCondition | null | undefined;
143
+ /**
144
+ * How many of the listing's images these values were drawn from.
145
+ */
146
+ imagesAnalysed?: number | undefined;
147
+ /**
148
+ * How the photographs present the property, keyed by quality key. `virtually_staged` is worth reading before treating condition as evidence, because digitally added furniture changes how a room reads.
149
+ */
150
+ presentation?: Presentation | undefined;
151
+ /**
152
+ * Spaces the photographs show, keyed by scene key, each with the evidence behind it. A key is absent when no photograph supports it, which is not the same as the property lacking that space.
153
+ */
154
+ spaces?: Spaces | undefined;
155
+ /**
156
+ * Release of the label vocabulary these values were produced against.
157
+ */
158
+ taxonomyVersion?: string | undefined;
159
+ };
160
+
49
161
  /**
50
162
  * What the listing asks for the property.
51
163
  */
@@ -142,6 +254,10 @@ export type Listing = {
142
254
  * Identifier of this listing.
143
255
  */
144
256
  listingId?: string | undefined;
257
+ /**
258
+ * What the listing's photographs show, as distinct from what its text advertises. Null until the gallery has been analysed.
259
+ */
260
+ observedFeatures?: ObservedFeatures | null | undefined;
145
261
  /**
146
262
  * Every price this listing has been advertised at, starting with the first.
147
263
  */
@@ -219,6 +335,189 @@ export function listingFeaturesFromJSON(
219
335
  );
220
336
  }
221
337
 
338
+ /** @internal */
339
+ export const ListingCondition$inboundSchema: z.ZodType<
340
+ ListingCondition,
341
+ z.ZodTypeDef,
342
+ unknown
343
+ > = z.object({
344
+ confidence: z.number().optional(),
345
+ value: ImageCondition$inboundSchema.optional(),
346
+ });
347
+
348
+ export function listingConditionFromJSON(
349
+ jsonString: string,
350
+ ): SafeParseResult<ListingCondition, SDKValidationError> {
351
+ return safeParse(
352
+ jsonString,
353
+ (x) => ListingCondition$inboundSchema.parse(JSON.parse(x)),
354
+ `Failed to parse 'ListingCondition' from JSON`,
355
+ );
356
+ }
357
+
358
+ /** @internal */
359
+ export const Presentation$inboundSchema: z.ZodType<
360
+ Presentation,
361
+ z.ZodTypeDef,
362
+ unknown
363
+ > = z.object({
364
+ empty_room: ObservedFeature$inboundSchema.optional(),
365
+ furnished: ObservedFeature$inboundSchema.optional(),
366
+ virtually_staged: ObservedFeature$inboundSchema.optional(),
367
+ watermark_present: ObservedFeature$inboundSchema.optional(),
368
+ }).transform((v) => {
369
+ return remap$(v, {
370
+ "empty_room": "emptyRoom",
371
+ "virtually_staged": "virtuallyStaged",
372
+ "watermark_present": "watermarkPresent",
373
+ });
374
+ });
375
+
376
+ export function presentationFromJSON(
377
+ jsonString: string,
378
+ ): SafeParseResult<Presentation, SDKValidationError> {
379
+ return safeParse(
380
+ jsonString,
381
+ (x) => Presentation$inboundSchema.parse(JSON.parse(x)),
382
+ `Failed to parse 'Presentation' from JSON`,
383
+ );
384
+ }
385
+
386
+ /** @internal */
387
+ export const Spaces$inboundSchema: z.ZodType<Spaces, z.ZodTypeDef, unknown> = z
388
+ .object({
389
+ communal: ObservedFeature$inboundSchema.optional(),
390
+ "communal.corridor": ObservedFeature$inboundSchema.optional(),
391
+ "communal.garden": ObservedFeature$inboundSchema.optional(),
392
+ "communal.lobby": ObservedFeature$inboundSchema.optional(),
393
+ exterior: ObservedFeature$inboundSchema.optional(),
394
+ "exterior.aerial": ObservedFeature$inboundSchema.optional(),
395
+ "exterior.front_elevation": ObservedFeature$inboundSchema.optional(),
396
+ "exterior.rear_elevation": ObservedFeature$inboundSchema.optional(),
397
+ "exterior.street": ObservedFeature$inboundSchema.optional(),
398
+ interior: ObservedFeature$inboundSchema.optional(),
399
+ "interior.attic": ObservedFeature$inboundSchema.optional(),
400
+ "interior.basement": ObservedFeature$inboundSchema.optional(),
401
+ "interior.bathroom": ObservedFeature$inboundSchema.optional(),
402
+ "interior.bathroom.cloakroom": ObservedFeature$inboundSchema.optional(),
403
+ "interior.bathroom.ensuite": ObservedFeature$inboundSchema.optional(),
404
+ "interior.bathroom.shower_room": ObservedFeature$inboundSchema.optional(),
405
+ "interior.bedroom": ObservedFeature$inboundSchema.optional(),
406
+ "interior.conservatory": ObservedFeature$inboundSchema.optional(),
407
+ "interior.dining_room": ObservedFeature$inboundSchema.optional(),
408
+ "interior.dressing_room": ObservedFeature$inboundSchema.optional(),
409
+ "interior.games_room": ObservedFeature$inboundSchema.optional(),
410
+ "interior.garage_interior": ObservedFeature$inboundSchema.optional(),
411
+ "interior.gym": ObservedFeature$inboundSchema.optional(),
412
+ "interior.hallway": ObservedFeature$inboundSchema.optional(),
413
+ "interior.kitchen": ObservedFeature$inboundSchema.optional(),
414
+ "interior.kitchen_diner": ObservedFeature$inboundSchema.optional(),
415
+ "interior.kitchen_living": ObservedFeature$inboundSchema.optional(),
416
+ "interior.landing": ObservedFeature$inboundSchema.optional(),
417
+ "interior.library": ObservedFeature$inboundSchema.optional(),
418
+ "interior.living_room": ObservedFeature$inboundSchema.optional(),
419
+ "interior.pool_room": ObservedFeature$inboundSchema.optional(),
420
+ "interior.porch": ObservedFeature$inboundSchema.optional(),
421
+ "interior.sauna": ObservedFeature$inboundSchema.optional(),
422
+ "interior.stairs": ObservedFeature$inboundSchema.optional(),
423
+ "interior.storage": ObservedFeature$inboundSchema.optional(),
424
+ "interior.study": ObservedFeature$inboundSchema.optional(),
425
+ "interior.utility_room": ObservedFeature$inboundSchema.optional(),
426
+ "interior.wine_cellar": ObservedFeature$inboundSchema.optional(),
427
+ "interior.workshop": ObservedFeature$inboundSchema.optional(),
428
+ non_property: ObservedFeature$inboundSchema.optional(),
429
+ outdoor_space: ObservedFeature$inboundSchema.optional(),
430
+ "outdoor_space.balcony": ObservedFeature$inboundSchema.optional(),
431
+ "outdoor_space.driveway": ObservedFeature$inboundSchema.optional(),
432
+ "outdoor_space.garden": ObservedFeature$inboundSchema.optional(),
433
+ "outdoor_space.outbuilding": ObservedFeature$inboundSchema.optional(),
434
+ "outdoor_space.patio": ObservedFeature$inboundSchema.optional(),
435
+ "outdoor_space.pool": ObservedFeature$inboundSchema.optional(),
436
+ "outdoor_space.terrace": ObservedFeature$inboundSchema.optional(),
437
+ }).transform((v) => {
438
+ return remap$(v, {
439
+ "communal.corridor": "communalCorridor",
440
+ "communal.garden": "communalGarden",
441
+ "communal.lobby": "communalLobby",
442
+ "exterior.aerial": "exteriorAerial",
443
+ "exterior.front_elevation": "exteriorFrontElevation",
444
+ "exterior.rear_elevation": "exteriorRearElevation",
445
+ "exterior.street": "exteriorStreet",
446
+ "interior.attic": "interiorAttic",
447
+ "interior.basement": "interiorBasement",
448
+ "interior.bathroom": "interiorBathroom",
449
+ "interior.bathroom.cloakroom": "interiorBathroomCloakroom",
450
+ "interior.bathroom.ensuite": "interiorBathroomEnsuite",
451
+ "interior.bathroom.shower_room": "interiorBathroomShowerRoom",
452
+ "interior.bedroom": "interiorBedroom",
453
+ "interior.conservatory": "interiorConservatory",
454
+ "interior.dining_room": "interiorDiningRoom",
455
+ "interior.dressing_room": "interiorDressingRoom",
456
+ "interior.games_room": "interiorGamesRoom",
457
+ "interior.garage_interior": "interiorGarageInterior",
458
+ "interior.gym": "interiorGym",
459
+ "interior.hallway": "interiorHallway",
460
+ "interior.kitchen": "interiorKitchen",
461
+ "interior.kitchen_diner": "interiorKitchenDiner",
462
+ "interior.kitchen_living": "interiorKitchenLiving",
463
+ "interior.landing": "interiorLanding",
464
+ "interior.library": "interiorLibrary",
465
+ "interior.living_room": "interiorLivingRoom",
466
+ "interior.pool_room": "interiorPoolRoom",
467
+ "interior.porch": "interiorPorch",
468
+ "interior.sauna": "interiorSauna",
469
+ "interior.stairs": "interiorStairs",
470
+ "interior.storage": "interiorStorage",
471
+ "interior.study": "interiorStudy",
472
+ "interior.utility_room": "interiorUtilityRoom",
473
+ "interior.wine_cellar": "interiorWineCellar",
474
+ "interior.workshop": "interiorWorkshop",
475
+ "non_property": "nonProperty",
476
+ "outdoor_space": "outdoorSpace",
477
+ "outdoor_space.balcony": "outdoorSpaceBalcony",
478
+ "outdoor_space.driveway": "outdoorSpaceDriveway",
479
+ "outdoor_space.garden": "outdoorSpaceGarden",
480
+ "outdoor_space.outbuilding": "outdoorSpaceOutbuilding",
481
+ "outdoor_space.patio": "outdoorSpacePatio",
482
+ "outdoor_space.pool": "outdoorSpacePool",
483
+ "outdoor_space.terrace": "outdoorSpaceTerrace",
484
+ });
485
+ });
486
+
487
+ export function spacesFromJSON(
488
+ jsonString: string,
489
+ ): SafeParseResult<Spaces, SDKValidationError> {
490
+ return safeParse(
491
+ jsonString,
492
+ (x) => Spaces$inboundSchema.parse(JSON.parse(x)),
493
+ `Failed to parse 'Spaces' from JSON`,
494
+ );
495
+ }
496
+
497
+ /** @internal */
498
+ export const ObservedFeatures$inboundSchema: z.ZodType<
499
+ ObservedFeatures,
500
+ z.ZodTypeDef,
501
+ unknown
502
+ > = z.object({
503
+ condition: z.nullable(z.lazy(() => ListingCondition$inboundSchema))
504
+ .optional(),
505
+ imagesAnalysed: z.number().int().optional(),
506
+ presentation: z.lazy(() => Presentation$inboundSchema).optional(),
507
+ spaces: z.lazy(() => Spaces$inboundSchema).optional(),
508
+ taxonomyVersion: z.string().optional(),
509
+ });
510
+
511
+ export function observedFeaturesFromJSON(
512
+ jsonString: string,
513
+ ): SafeParseResult<ObservedFeatures, SDKValidationError> {
514
+ return safeParse(
515
+ jsonString,
516
+ (x) => ObservedFeatures$inboundSchema.parse(JSON.parse(x)),
517
+ `Failed to parse 'ObservedFeatures' from JSON`,
518
+ );
519
+ }
520
+
222
521
  /** @internal */
223
522
  export const Pricing$inboundSchema: z.ZodType<Pricing, z.ZodTypeDef, unknown> =
224
523
  z.object({
@@ -297,6 +596,8 @@ export const Listing$inboundSchema: z.ZodType<Listing, z.ZodTypeDef, unknown> =
297
596
  floorPlanImages: z.array(ListingImage$inboundSchema).optional(),
298
597
  images: z.array(ListingImage$inboundSchema).optional(),
299
598
  listingId: z.string().optional(),
599
+ observedFeatures: z.nullable(z.lazy(() => ObservedFeatures$inboundSchema))
600
+ .optional(),
300
601
  priceChange: z.array(ListingPriceChange$inboundSchema).optional(),
301
602
  pricing: z.lazy(() => Pricing$inboundSchema).optional(),
302
603
  publishedDate: z.nullable(
@@ -4,10 +4,66 @@
4
4
 
5
5
  import * as z from "zod/v3";
6
6
  import { safeParse } from "../../../lib/schemas.js";
7
+ import * as openEnums from "../../types/enums.js";
8
+ import { OpenEnum } from "../../types/enums.js";
7
9
  import { Result as SafeParseResult } from "../../types/fp.js";
8
10
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
11
+ import {
12
+ ImageDocumentClass,
13
+ ImageDocumentClass$inboundSchema,
14
+ } from "./imagedocumentclass.js";
15
+ import { ImageQuality, ImageQuality$inboundSchema } from "./imagequality.js";
16
+ import {
17
+ ImageSceneLabel,
18
+ ImageSceneLabel$inboundSchema,
19
+ } from "./imagescenelabel.js";
20
+
21
+ /**
22
+ * The state of repair the photograph suggests. Null when no assessment is published for this image.
23
+ */
24
+ export const ListingImageCondition = {
25
+ MoveInReady: "move_in_ready",
26
+ CosmeticallyDated: "cosmetically_dated",
27
+ RenovationNeeded: "renovation_needed",
28
+ Derelict: "derelict",
29
+ } as const;
30
+ /**
31
+ * The state of repair the photograph suggests. Null when no assessment is published for this image.
32
+ */
33
+ export type ListingImageCondition = OpenEnum<typeof ListingImageCondition>;
34
+
35
+ /**
36
+ * What this image is and what it shows. Null until the image has been analysed.
37
+ */
38
+ export type Labels = {
39
+ condition?: ListingImageCondition | null | undefined;
40
+ /**
41
+ * What the image is, rather than what it shows. A `photo` is a photograph of the property or its surroundings; the other values are documents published alongside the photographs.
42
+ */
43
+ documentClass?: ImageDocumentClass | undefined;
44
+ /**
45
+ * How strongly the image supports its document class, from 0 to 1.
46
+ */
47
+ documentClassConfidence?: number | undefined;
48
+ /**
49
+ * How the photograph presents the property rather than what it shows. `virtually_staged` marks furniture added digitally, and `empty_room` marks an unfurnished space.
50
+ */
51
+ presentation?: Array<ImageQuality> | undefined;
52
+ /**
53
+ * The spaces the photograph shows, most specific first, each with its own confidence. Keys are hierarchical, so `interior.bathroom.ensuite` also implies `interior.bathroom` and `interior`. Empty for anything that is not a photograph.
54
+ */
55
+ scene?: Array<ImageSceneLabel> | undefined;
56
+ /**
57
+ * Release of the label vocabulary these values were produced against.
58
+ */
59
+ taxonomyVersion?: string | undefined;
60
+ };
9
61
 
10
62
  export type ListingImage = {
63
+ /**
64
+ * What this image is and what it shows. Null until the image has been analysed.
65
+ */
66
+ labels?: Labels | null | undefined;
11
67
  /**
12
68
  * URL of a ready-made 640×480 WebP thumbnail of the same image.
13
69
  */
@@ -18,12 +74,41 @@ export type ListingImage = {
18
74
  url?: string | null | undefined;
19
75
  };
20
76
 
77
+ /** @internal */
78
+ export const ListingImageCondition$inboundSchema: z.ZodType<
79
+ ListingImageCondition,
80
+ z.ZodTypeDef,
81
+ unknown
82
+ > = openEnums.inboundSchema(ListingImageCondition);
83
+
84
+ /** @internal */
85
+ export const Labels$inboundSchema: z.ZodType<Labels, z.ZodTypeDef, unknown> = z
86
+ .object({
87
+ condition: z.nullable(ListingImageCondition$inboundSchema).optional(),
88
+ documentClass: ImageDocumentClass$inboundSchema.optional(),
89
+ documentClassConfidence: z.number().optional(),
90
+ presentation: z.array(ImageQuality$inboundSchema).optional(),
91
+ scene: z.array(ImageSceneLabel$inboundSchema).optional(),
92
+ taxonomyVersion: z.string().optional(),
93
+ });
94
+
95
+ export function labelsFromJSON(
96
+ jsonString: string,
97
+ ): SafeParseResult<Labels, SDKValidationError> {
98
+ return safeParse(
99
+ jsonString,
100
+ (x) => Labels$inboundSchema.parse(JSON.parse(x)),
101
+ `Failed to parse 'Labels' from JSON`,
102
+ );
103
+ }
104
+
21
105
  /** @internal */
22
106
  export const ListingImage$inboundSchema: z.ZodType<
23
107
  ListingImage,
24
108
  z.ZodTypeDef,
25
109
  unknown
26
110
  > = z.object({
111
+ labels: z.nullable(z.lazy(() => Labels$inboundSchema)).optional(),
27
112
  thumbnailUrl: z.nullable(z.string()).optional(),
28
113
  url: z.nullable(z.string()).optional(),
29
114
  });
@@ -20,6 +20,10 @@ export const MortgageChargeStatus = {
20
20
  export type MortgageChargeStatus = OpenEnum<typeof MortgageChargeStatus>;
21
21
 
22
22
  export type MortgageCharge = {
23
+ /**
24
+ * Other title numbers the same charge is registered against, read from an `affecting also title …` clause. Empty when the charge affects only `titleAffected`.
25
+ */
26
+ alsoAffectsTitles: Array<string>;
23
27
  chargeDate: string;
24
28
  chargeHolder: TitleProprietor;
25
29
  /**
@@ -55,6 +59,7 @@ export const MortgageCharge$inboundSchema: z.ZodType<
55
59
  z.ZodTypeDef,
56
60
  unknown
57
61
  > = z.object({
62
+ alsoAffectsTitles: z.array(z.string()),
58
63
  chargeDate: z.string(),
59
64
  chargeHolder: TitleProprietor$inboundSchema,
60
65
  dischargedDate: z.nullable(z.string()),
@@ -0,0 +1,44 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import * as z from "zod/v3";
6
+ import { safeParse } from "../../../lib/schemas.js";
7
+ import { Result as SafeParseResult } from "../../types/fp.js";
8
+ import { SDKValidationError } from "../errors/sdkvalidationerror.js";
9
+
10
+ export type ObservedFeature = {
11
+ /**
12
+ * Confidence of the strongest supporting image, from 0 to 1.
13
+ */
14
+ confidence?: number | undefined;
15
+ /**
16
+ * How many photographs support the feature. This counts images, not rooms: three photographs of a bathroom do not mean three bathrooms.
17
+ */
18
+ imageCount?: number | undefined;
19
+ /**
20
+ * Whether the photographs support this feature at the published confidence.
21
+ */
22
+ present?: boolean | undefined;
23
+ };
24
+
25
+ /** @internal */
26
+ export const ObservedFeature$inboundSchema: z.ZodType<
27
+ ObservedFeature,
28
+ z.ZodTypeDef,
29
+ unknown
30
+ > = z.object({
31
+ confidence: z.number().optional(),
32
+ imageCount: z.number().int().optional(),
33
+ present: z.boolean().optional(),
34
+ });
35
+
36
+ export function observedFeatureFromJSON(
37
+ jsonString: string,
38
+ ): SafeParseResult<ObservedFeature, SDKValidationError> {
39
+ return safeParse(
40
+ jsonString,
41
+ (x) => ObservedFeature$inboundSchema.parse(JSON.parse(x)),
42
+ `Failed to parse 'ObservedFeature' from JSON`,
43
+ );
44
+ }
@@ -12,13 +12,20 @@ export type OtherCharge = {
12
12
  * The kind of charge, as the register labels it.
13
13
  */
14
14
  chargeType: string;
15
+ /**
16
+ * The date the entry was made in the register (the entry's `(dd.mm.yyyy)` prefix). Null when the entry carries no registration date.
17
+ */
15
18
  date: string | null;
16
19
  /**
17
20
  * Plain-English explanation of what this charge means for the owner, written by a language model from the register entry.
18
21
  */
19
22
  effectOfCharge: string;
20
23
  /**
21
- * The parties named in the original charge entry.
24
+ * The date of the deed the entry refers to (the conveyance, transfer, lease or charge that created it), when the entry states one. Null otherwise. Distinct from `date`, which is when the entry was registered.
25
+ */
26
+ instrumentDate: string | null;
27
+ /**
28
+ * The parties the entry names, verbatim, in the order the deed lists them. Empty when the entry names nobody. Never a placeholder: an entry that names parties and reports none here is an extraction defect, not a register fact.
22
29
  */
23
30
  originalParties: Array<string>;
24
31
  sourceEntryRef: string;
@@ -33,6 +40,7 @@ export const OtherCharge$inboundSchema: z.ZodType<
33
40
  chargeType: z.string(),
34
41
  date: z.nullable(z.string()),
35
42
  effectOfCharge: z.string(),
43
+ instrumentDate: z.nullable(z.string()),
36
44
  originalParties: z.array(z.string()),
37
45
  sourceEntryRef: z.string(),
38
46
  });
@@ -8,7 +8,14 @@ import { Result as SafeParseResult } from "../../types/fp.js";
8
8
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
9
9
 
10
10
  export type TitleCovenant = {
11
+ /**
12
+ * The date the entry was made in the register (the entry's `(dd.mm.yyyy)` prefix). Null when the entry carries no registration date.
13
+ */
11
14
  date: string | null;
15
+ /**
16
+ * The date of the deed the entry refers to (the conveyance, transfer, lease or charge that created it), when the entry states one. Null otherwise. Distinct from `date`, which is when the entry was registered.
17
+ */
18
+ instrumentDate: string | null;
12
19
  /**
13
20
  * The legal text, quoted verbatim from the register entry.
14
21
  */
@@ -31,6 +38,7 @@ export const TitleCovenant$inboundSchema: z.ZodType<
31
38
  unknown
32
39
  > = z.object({
33
40
  date: z.nullable(z.string()),
41
+ instrumentDate: z.nullable(z.string()),
34
42
  rawText: z.string(),
35
43
  sourceEntryRef: z.string(),
36
44
  title: z.string(),
@@ -18,6 +18,14 @@ import {
18
18
  TitleDocumentSummary$inboundSchema,
19
19
  } from "./titledocumentsummary.js";
20
20
  import { TitleNotice, TitleNotice$inboundSchema } from "./titlenotice.js";
21
+ import {
22
+ TitlePricePaid,
23
+ TitlePricePaid$inboundSchema,
24
+ } from "./titlepricepaid.js";
25
+ import {
26
+ TitlePropertyRight,
27
+ TitlePropertyRight$inboundSchema,
28
+ } from "./titlepropertyright.js";
21
29
  import {
22
30
  TitleProprietor,
23
31
  TitleProprietor$inboundSchema,
@@ -71,6 +79,9 @@ export type TitleExtractionPayload = {
71
79
  * The current owner, formatted as a single line ready to display.
72
80
  */
73
81
  currentOwnerDisplay: string;
82
+ /**
83
+ * The title's documents as they stood when the extraction ran. Document uploads run concurrently with extraction, so this is a snapshot: the API overlays the live document rows on every read, and a consumer must never treat a `pending` here as current.
84
+ */
74
85
  documents: Array<TitleDocumentSummary>;
75
86
  extractedAt: Date;
76
87
  /**
@@ -79,13 +90,21 @@ export type TitleExtractionPayload = {
79
90
  leaseTermDescription: string;
80
91
  notices: Array<TitleNotice>;
81
92
  ownership: Ownership;
93
+ /**
94
+ * The price-paid entry from the Proprietorship Register. Null when the register records none.
95
+ */
96
+ pricePaid: TitlePricePaid | null;
82
97
  promptVersion: string;
98
+ /**
99
+ * Every Property Register entry other than the estate description and the lease particulars: easements, party-wall provisions, exceptions. Empty when the A register has no such entries.
100
+ */
101
+ propertyRights: Array<TitlePropertyRight>;
83
102
  /**
84
103
  * The qualification entry, quoted verbatim from the register. Null on titles that carry no qualification.
85
104
  */
86
105
  qualification: string | null;
87
106
  /**
88
- * The edition date of the register this extract was taken from, as an ISO 8601 timestamp.
107
+ * The instant the official copy states it shows the register at ("shows the entries on the register of title on 17 SEP 2026 at 12:56:56"), as an ISO 8601 UTC timestamp. Not our fetch clock.
89
108
  */
90
109
  registerAsOf: Date;
91
110
  registeredCharges: RegisteredCharges;
@@ -145,7 +164,9 @@ export const TitleExtractionPayload$inboundSchema: z.ZodType<
145
164
  leaseTermDescription: z.string(),
146
165
  notices: z.array(TitleNotice$inboundSchema),
147
166
  ownership: z.lazy(() => Ownership$inboundSchema),
167
+ pricePaid: z.nullable(TitlePricePaid$inboundSchema),
148
168
  promptVersion: z.string(),
169
+ propertyRights: z.array(TitlePropertyRight$inboundSchema),
149
170
  qualification: z.nullable(z.string()).default(null),
150
171
  registerAsOf: z.string().datetime({ offset: true }).transform(v =>
151
172
  new Date(v)
@@ -19,7 +19,14 @@ export const NoticeType = {
19
19
  export type NoticeType = OpenEnum<typeof NoticeType>;
20
20
 
21
21
  export type TitleNotice = {
22
+ /**
23
+ * The date the entry was made in the register (the entry's `(dd.mm.yyyy)` prefix). Null when the entry carries no registration date.
24
+ */
22
25
  date: string | null;
26
+ /**
27
+ * The date of the deed the entry refers to (the conveyance, transfer, lease or charge that created it), when the entry states one. Null otherwise. Distinct from `date`, which is when the entry was registered.
28
+ */
29
+ instrumentDate: string | null;
23
30
  noticeType: NoticeType;
24
31
  partyName: string | null;
25
32
  /**
@@ -51,6 +58,7 @@ export const TitleNotice$inboundSchema: z.ZodType<
51
58
  unknown
52
59
  > = z.object({
53
60
  date: z.nullable(z.string()),
61
+ instrumentDate: z.nullable(z.string()),
54
62
  noticeType: NoticeType$inboundSchema,
55
63
  partyName: z.nullable(z.string()),
56
64
  rawText: z.string(),