@opendoor/partner-sdk-server-js-core 0.0.1-alpha.28.1 → 0.0.1-alpha.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/answerKeyMapping.d.ts +18 -0
- package/dist/answerKeyMapping.d.ts.map +1 -0
- package/dist/answerKeyMapping.js +134 -0
- package/dist/client.d.ts +11 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +36 -16
- package/dist/graphql/queries.d.ts +4 -0
- package/dist/graphql/queries.d.ts.map +1 -1
- package/dist/graphql/queries.js +25 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps dot-notation answer keys (from QualificationQuestions component)
|
|
3
|
+
* to the GraphQL OfferInput camelCase field names.
|
|
4
|
+
*
|
|
5
|
+
* Keys not in this map are treated as experimental question data
|
|
6
|
+
* and sent via the `experimental` field.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Transform dot-notation answers from QualificationQuestions into
|
|
10
|
+
* the GraphQL OfferInput shape: camelCase fields + experimental array.
|
|
11
|
+
*
|
|
12
|
+
* - Mapped keys become camelCase OfferInput fields (e.g. home.bedrooms → homeBedrooms)
|
|
13
|
+
* - Feature/condition keys become experimental entries with stringValues or doubleValue
|
|
14
|
+
* - HOA type fans out to separate boolean fields
|
|
15
|
+
* - "yes"/"no" strings are coerced to booleans
|
|
16
|
+
*/
|
|
17
|
+
export declare function transformAnswersToOfferInput(answers: Record<string, unknown>): Record<string, unknown>;
|
|
18
|
+
//# sourceMappingURL=answerKeyMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerKeyMapping.d.ts","sourceRoot":"","sources":["../src/answerKeyMapping.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuEH;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgEzB"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maps dot-notation answer keys (from QualificationQuestions component)
|
|
3
|
+
* to the GraphQL OfferInput camelCase field names.
|
|
4
|
+
*
|
|
5
|
+
* Keys not in this map are treated as experimental question data
|
|
6
|
+
* and sent via the `experimental` field.
|
|
7
|
+
*/
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// Dot-notation → camelCase field mapping
|
|
10
|
+
// ============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Direct mapping: dot-notation key → GraphQL OfferInput field name.
|
|
13
|
+
* If a key is in this map, its value goes directly into the offerInput object.
|
|
14
|
+
*/
|
|
15
|
+
const DOT_TO_CAMEL = {
|
|
16
|
+
// Home details
|
|
17
|
+
'home.bedrooms': 'homeBedrooms',
|
|
18
|
+
'home.bathrooms.full': 'homeBathroomsFull',
|
|
19
|
+
'home.bathrooms.half': 'homeBathroomsPartial',
|
|
20
|
+
'home.above_grade_sq_ft': 'homeAboveGradeSqFt',
|
|
21
|
+
'home.dwelling_type': 'homeDwellingType',
|
|
22
|
+
'home.year_built': 'homeYearBuilt',
|
|
23
|
+
'home.exterior_stories': 'homeExteriorStories',
|
|
24
|
+
'home.entry_type': 'homeEntryType',
|
|
25
|
+
'home.covered_parking_type': 'homeCoveredParkingType',
|
|
26
|
+
'home.garage_spaces': 'homeGarageSpaces',
|
|
27
|
+
'home.carport_spaces': 'homeCarportSpaces',
|
|
28
|
+
'home.pool_type': 'homePoolType',
|
|
29
|
+
'home.has_basement': 'homeHasBasement',
|
|
30
|
+
'home.basement_finished_sq_ft': 'homeBasementFinishedSqFt',
|
|
31
|
+
'home.basement_unfinished_sq_ft': 'homeBasementUnfinishedSqFt',
|
|
32
|
+
'home.kitchen_counter_type': 'homeKitchenCounterType',
|
|
33
|
+
// HOA
|
|
34
|
+
'home.hoa': 'homeHoa',
|
|
35
|
+
// home.hoa_type is handled specially in transformAnswersToOfferInput (fans out to boolean fields)
|
|
36
|
+
'home.hoa_fees': 'homeHoaFees',
|
|
37
|
+
'home.has_upgrades': 'homeHasUpgrades',
|
|
38
|
+
// Seller scores (condition)
|
|
39
|
+
'home.kitchen_seller_score': 'homeKitchenCondition',
|
|
40
|
+
'home.bathroom_seller_score': 'homeBathroomCondition',
|
|
41
|
+
'home.living_room_seller_score': 'homeLivingRoomCondition',
|
|
42
|
+
'home.exterior_seller_score': 'homeExteriorCondition',
|
|
43
|
+
// Eligibility criteria
|
|
44
|
+
'home.eligibility_criteria.leased_solar_panels': 'homeEligibilityCriteriaLeasedSolarPanels',
|
|
45
|
+
'home.eligibility_criteria.known_foundation_issues': 'homeEligibilityCriteriaKnownFoundationIssues',
|
|
46
|
+
'home.eligibility_criteria.fire_damage': 'homeEligibilityCriteriaFireDamage',
|
|
47
|
+
'home.eligibility_criteria.well_water': 'homeEligibilityCriteriaWellWater',
|
|
48
|
+
'home.eligibility_criteria.septic': 'homeEligibilityCriteriaSeptic',
|
|
49
|
+
'home.eligibility_criteria.asbestos_siding': 'homeEligibilityCriteriaAsbestosSiding',
|
|
50
|
+
'home.eligibility_criteria.livestock': 'homeEligibilityCriteriaLivestock',
|
|
51
|
+
'home.eligibility_criteria.mobile_manufactured_home': 'homeEligibilityCriteriaMobileManufacturedHome',
|
|
52
|
+
// Seller contact info
|
|
53
|
+
'seller.full_name': 'sellerFullName',
|
|
54
|
+
'seller.email': 'sellerEmail',
|
|
55
|
+
'seller.phone_number': 'sellerPhoneNumber',
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Keys that should be skipped entirely (internal state, not sent to API).
|
|
59
|
+
*/
|
|
60
|
+
const SKIP_KEYS = new Set([
|
|
61
|
+
'offerId',
|
|
62
|
+
'seller.marketing_consent', // UI-only, not a GraphQL field
|
|
63
|
+
]);
|
|
64
|
+
/**
|
|
65
|
+
* Transform dot-notation answers from QualificationQuestions into
|
|
66
|
+
* the GraphQL OfferInput shape: camelCase fields + experimental array.
|
|
67
|
+
*
|
|
68
|
+
* - Mapped keys become camelCase OfferInput fields (e.g. home.bedrooms → homeBedrooms)
|
|
69
|
+
* - Feature/condition keys become experimental entries with stringValues or doubleValue
|
|
70
|
+
* - HOA type fans out to separate boolean fields
|
|
71
|
+
* - "yes"/"no" strings are coerced to booleans
|
|
72
|
+
*/
|
|
73
|
+
export function transformAnswersToOfferInput(answers) {
|
|
74
|
+
const offerInput = {};
|
|
75
|
+
const experimental = [];
|
|
76
|
+
for (const [key, value] of Object.entries(answers)) {
|
|
77
|
+
if (value === undefined || SKIP_KEYS.has(key))
|
|
78
|
+
continue;
|
|
79
|
+
// Special case: home.hoa_type fans out to separate boolean fields
|
|
80
|
+
// GraphQL has homeHoaTypeAgeRestrictedCommunity and homeHoaTypeGatedCommunity as booleans
|
|
81
|
+
if (key === 'home.hoa_type') {
|
|
82
|
+
offerInput['homeHoaTypeAgeRestrictedCommunity'] =
|
|
83
|
+
value === 'age_restricted_community';
|
|
84
|
+
offerInput['homeHoaTypeGatedCommunity'] = value === 'gated_community';
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Special case: home.hoa_type.guarded_gated_community → boolean
|
|
88
|
+
if (key === 'home.hoa_type.guarded_gated_community') {
|
|
89
|
+
offerInput['homeHoaTypeGuardedGatedCommunity'] = value === 'has_guard';
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const camelKey = DOT_TO_CAMEL[key];
|
|
93
|
+
if (camelKey) {
|
|
94
|
+
// Coerce "yes"/"no" to boolean
|
|
95
|
+
if (value === 'yes' || value === 'no') {
|
|
96
|
+
offerInput[camelKey] = value === 'yes';
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
offerInput[camelKey] = value;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else if (key.startsWith('home.condition.') ||
|
|
103
|
+
key.startsWith('home.features.') ||
|
|
104
|
+
key === 'home.mortgage_balance' ||
|
|
105
|
+
key === 'home.lot_sq_ft' ||
|
|
106
|
+
key === 'home.upper_level_sq_ft' ||
|
|
107
|
+
key === 'home.basement_sq_ft') {
|
|
108
|
+
// Route to experimental field
|
|
109
|
+
if (Array.isArray(value)) {
|
|
110
|
+
experimental.push({
|
|
111
|
+
questionKey: key,
|
|
112
|
+
stringValues: value,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
else if (typeof value === 'number') {
|
|
116
|
+
experimental.push({ questionKey: key, doubleValue: value });
|
|
117
|
+
}
|
|
118
|
+
else if (typeof value === 'boolean') {
|
|
119
|
+
experimental.push({
|
|
120
|
+
questionKey: key,
|
|
121
|
+
stringValues: value ? ['true'] : ['false'],
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Passthrough: already a valid camelCase OfferInput field
|
|
127
|
+
offerInput[key] = value;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (experimental.length > 0) {
|
|
131
|
+
offerInput['experimental'] = experimental;
|
|
132
|
+
}
|
|
133
|
+
return offerInput;
|
|
134
|
+
}
|
package/dist/client.d.ts
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* const client = new OpendoorClient({
|
|
13
13
|
* apiKey: process.env.OPENDOOR_API_KEY!,
|
|
14
|
-
* apiEndpoint: 'https://partner.
|
|
15
|
-
* addressEndpoint: 'https://
|
|
14
|
+
* apiEndpoint: 'https://partner.simplersell.com/api/graphql', // staging (default)
|
|
15
|
+
* addressEndpoint: 'https://demo.simplersell.com', // staging (default)
|
|
16
16
|
* });
|
|
17
17
|
*
|
|
18
18
|
* const offer = await client.createOffer({
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
*
|
|
23
23
|
* @packageDocumentation
|
|
24
24
|
*/
|
|
25
|
-
import type { AddressSuggestionsResponse, CreateOfferRequest, CreateOfferResponse, UpdateOfferRequest, UpdateOfferResponse, GetOfferResponse, GetAssessmentSlotsRequest, GetAssessmentSlotsResponse, GetHomeDetailRequest, GetHomeDetailResponse } from './types.js';
|
|
25
|
+
import type { AddressSuggestionsResponse, CreateOfferRequest, CreateOfferResponse, UpdateOfferRequest, UpdateOfferResponse, GetOfferResponse, GetOfferWithPricingResponse, GetAssessmentSlotsRequest, GetAssessmentSlotsResponse, GetHomeDetailRequest, GetHomeDetailResponse } from './types.js';
|
|
26
26
|
/**
|
|
27
27
|
* Configuration for the OpendoorClient.
|
|
28
28
|
*
|
|
29
29
|
* @param apiKey - Partner API key. Used as `Authorization: Basic <apiKey>`.
|
|
30
|
-
* @param apiEndpoint - GraphQL API endpoint. Defaults to production.
|
|
30
|
+
* @param apiEndpoint - GraphQL API endpoint. Defaults to staging (partner.simplersell.com). For production, use 'https://partner.opendoor.com/api/graphql'.
|
|
31
31
|
* @param timeout - Request timeout in milliseconds. Defaults to 30000.
|
|
32
32
|
* @param debug - Enable debug logging to console. Defaults to false.
|
|
33
|
-
* @param addressEndpoint - CF Worker base URL for address autocomplete. Defaults to production.
|
|
33
|
+
* @param addressEndpoint - CF Worker base URL for address autocomplete. Defaults to staging (demo.simplersell.com). For production, use 'https://www.opendoor.com'.
|
|
34
34
|
*/
|
|
35
35
|
export interface OpendoorClientConfig {
|
|
36
36
|
apiKey: string;
|
|
@@ -88,6 +88,12 @@ export declare class OpendoorClient {
|
|
|
88
88
|
* @returns Full offer status including pricing data when OFFERED
|
|
89
89
|
*/
|
|
90
90
|
getOffer(offerId: string): Promise<GetOfferResponse>;
|
|
91
|
+
/**
|
|
92
|
+
* Get offer with net proceeds, mortgage balance, and seller info.
|
|
93
|
+
*
|
|
94
|
+
* @param offerId - The opendoorOfferRequestId
|
|
95
|
+
*/
|
|
96
|
+
getOfferWithSellDirectPricing(offerId: string): Promise<GetOfferWithPricingResponse>;
|
|
91
97
|
/**
|
|
92
98
|
* Get available assessment/inspection time slots for an offer.
|
|
93
99
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EACV,0BAA0B,EAE1B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EACV,0BAA0B,EAE1B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAyFpB;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAkED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,MAAM,EAAE,oBAAoB;IAiBxC;;;;;;;OAOG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,0BAA0B,CAAC;IAiDtC;;;OAGG;YACW,iBAAiB;IA4B/B;;OAEG;YACW,eAAe;IAqC7B;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAqBzE;;;;;;;OAOG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,mBAAmB,CAAC;IAoC/B;;;;;;OAMG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAc1D;;;;OAIG;IACG,6BAA6B,CACjC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,2BAA2B,CAAC;IAkBvC;;;;;OAKG;IACG,kBAAkB,CACtB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,0BAA0B,CAAC;IAuDtC;;;;;;OAMG;IACG,aAAa,CACjB,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;YA2BnB,OAAO;YAoDP,gBAAgB;IAgC9B,OAAO,CAAC,GAAG;CAKZ"}
|
package/dist/client.js
CHANGED
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
*
|
|
12
12
|
* const client = new OpendoorClient({
|
|
13
13
|
* apiKey: process.env.OPENDOOR_API_KEY!,
|
|
14
|
-
* apiEndpoint: 'https://partner.
|
|
15
|
-
* addressEndpoint: 'https://
|
|
14
|
+
* apiEndpoint: 'https://partner.simplersell.com/api/graphql', // staging (default)
|
|
15
|
+
* addressEndpoint: 'https://demo.simplersell.com', // staging (default)
|
|
16
16
|
* });
|
|
17
17
|
*
|
|
18
18
|
* const offer = await client.createOffer({
|
|
@@ -27,7 +27,8 @@ import { OpendoorAPIError } from './errors.js';
|
|
|
27
27
|
import { ValidationError } from './errors.js';
|
|
28
28
|
import { validateCreateOfferRequest, validateUpdateOfferRequest, } from './validators.js';
|
|
29
29
|
import { OFFER_REQUEST_CREATE, OFFER_REQUEST_UPDATE, } from './graphql/mutations.js';
|
|
30
|
-
import {
|
|
30
|
+
import { transformAnswersToOfferInput } from './answerKeyMapping.js';
|
|
31
|
+
import { OFFER_REQUEST_QUERY, OFFER_REQUEST_WITH_SELL_DIRECT_PRICING, SELLER_INPUT_PREFILLS_QUERY, } from './graphql/queries.js';
|
|
31
32
|
// ============================================================================
|
|
32
33
|
// Valid GraphQL OfferInput fields (from schema-public.graphql)
|
|
33
34
|
// ============================================================================
|
|
@@ -73,7 +74,10 @@ const VALID_OFFER_INPUT_FIELDS = new Set([
|
|
|
73
74
|
'homeEligibilityCriteriaUniqueOwnershipStructure',
|
|
74
75
|
'homeEligibilityCriteriaBelowMarketRateOwnership',
|
|
75
76
|
'homeEligibilityCriteriaRentControlledTenantOccupied',
|
|
77
|
+
'homeHoaFees',
|
|
78
|
+
'homeHasUpgrades',
|
|
76
79
|
'correlationId',
|
|
80
|
+
'experimental',
|
|
77
81
|
]);
|
|
78
82
|
/** Fields that accept enum values — the SDK uppercases them before sending */
|
|
79
83
|
const ENUM_FIELDS = new Set([
|
|
@@ -90,10 +94,10 @@ const ENUM_FIELDS = new Set([
|
|
|
90
94
|
'sellerSaleTimeline',
|
|
91
95
|
]);
|
|
92
96
|
const DEFAULT_CONFIG = {
|
|
93
|
-
apiEndpoint: 'https://partner.
|
|
97
|
+
apiEndpoint: 'https://partner.simplersell.com/api/graphql',
|
|
94
98
|
timeout: 30000,
|
|
95
99
|
debug: false,
|
|
96
|
-
addressEndpoint: 'https://
|
|
100
|
+
addressEndpoint: 'https://demo.simplersell.com',
|
|
97
101
|
};
|
|
98
102
|
// ============================================================================
|
|
99
103
|
// Client
|
|
@@ -212,10 +216,12 @@ export class OpendoorClient {
|
|
|
212
216
|
offerRequestCreateInput: {
|
|
213
217
|
address: data.address,
|
|
214
218
|
...(data.correlationId ? { correlationId: data.correlationId } : {}),
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
+
...(data.salesAssociateEmail
|
|
220
|
+
? { saleAssociateEmail: data.salesAssociateEmail }
|
|
221
|
+
: {}),
|
|
222
|
+
...(data.salesAssociateName
|
|
223
|
+
? { saleAssociateName: data.salesAssociateName }
|
|
224
|
+
: {}),
|
|
219
225
|
},
|
|
220
226
|
});
|
|
221
227
|
return result.offerRequestCreate.offerRequest;
|
|
@@ -230,16 +236,15 @@ export class OpendoorClient {
|
|
|
230
236
|
*/
|
|
231
237
|
async updateOffer(offerId, data) {
|
|
232
238
|
validateUpdateOfferRequest(offerId, data);
|
|
233
|
-
//
|
|
239
|
+
// Transform dot-notation keys (from QualificationQuestions) to
|
|
240
|
+
// camelCase OfferInput fields + experimental array, then filter
|
|
241
|
+
// to valid GraphQL fields and coerce enum values.
|
|
242
|
+
const transformed = transformAnswersToOfferInput(data);
|
|
234
243
|
const offerInput = {};
|
|
235
|
-
for (const [key, value] of Object.entries(
|
|
244
|
+
for (const [key, value] of Object.entries(transformed)) {
|
|
236
245
|
if (!VALID_OFFER_INPUT_FIELDS.has(key) || value === undefined)
|
|
237
246
|
continue;
|
|
238
|
-
if (value === '
|
|
239
|
-
// Coerce string booleans (e.g., homeHasBasement: "yes" → true)
|
|
240
|
-
offerInput[key] = value === 'yes';
|
|
241
|
-
}
|
|
242
|
-
else if (typeof value === 'string' && ENUM_FIELDS.has(key)) {
|
|
247
|
+
if (typeof value === 'string' && ENUM_FIELDS.has(key)) {
|
|
243
248
|
// Uppercase enum values (e.g., "single_family" → "SINGLE_FAMILY")
|
|
244
249
|
offerInput[key] = value.toUpperCase();
|
|
245
250
|
}
|
|
@@ -247,6 +252,7 @@ export class OpendoorClient {
|
|
|
247
252
|
offerInput[key] = value;
|
|
248
253
|
}
|
|
249
254
|
}
|
|
255
|
+
this.log(`updateOffer → transformed offerInput: ${JSON.stringify(offerInput, null, 2)}`);
|
|
250
256
|
const result = await this.graphql(OFFER_REQUEST_UPDATE, {
|
|
251
257
|
offerRequestUpdateInput: {
|
|
252
258
|
opendoorOfferRequestId: offerId,
|
|
@@ -271,6 +277,20 @@ export class OpendoorClient {
|
|
|
271
277
|
});
|
|
272
278
|
return result.offerRequest;
|
|
273
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Get offer with net proceeds, mortgage balance, and seller info.
|
|
282
|
+
*
|
|
283
|
+
* @param offerId - The opendoorOfferRequestId
|
|
284
|
+
*/
|
|
285
|
+
async getOfferWithSellDirectPricing(offerId) {
|
|
286
|
+
if (!offerId?.trim()) {
|
|
287
|
+
throw new ValidationError('offerId is required', 'offerId');
|
|
288
|
+
}
|
|
289
|
+
const result = await this.graphql(OFFER_REQUEST_WITH_SELL_DIRECT_PRICING, {
|
|
290
|
+
opendoorOfferRequestId: offerId,
|
|
291
|
+
});
|
|
292
|
+
return result.offerRequestWithSellDirectPricing;
|
|
293
|
+
}
|
|
274
294
|
// --------------------------------------------------------------------------
|
|
275
295
|
// Assessment slots (REST v2)
|
|
276
296
|
// --------------------------------------------------------------------------
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
* When OFFERED, offerData contains the price and dashboard URL.
|
|
8
8
|
*/
|
|
9
9
|
export declare const OFFER_REQUEST_QUERY = "\n query OfferRequest($opendoorOfferRequestId: String!) {\n offerRequest(opendoorOfferRequestId: $opendoorOfferRequestId) {\n opendoorOfferRequestId\n offerStatus\n denialInfo {\n deniedAt\n code\n explanation\n }\n offerData {\n headlinePriceCents\n headlineValuationRangeStart\n headlineValuationRangeEnd\n feeCostCents\n feeCostPercent\n estimatedClosingCostCents\n estimatedClosingCostPercent\n repairCostCents\n url\n authenticatedDashboardUrl\n offerSource\n sentAt\n expirationAt\n expirationAtDisplayDate\n underwritingCompletedAt\n underwritingState\n enteredContractAt\n coeDate\n closedAt\n withdrawnAt\n priceAlert\n }\n handoverAt\n }\n }\n";
|
|
10
|
+
/**
|
|
11
|
+
* Get offer request with net proceeds, mortgage balance, and seller info.
|
|
12
|
+
*/
|
|
13
|
+
export declare const OFFER_REQUEST_WITH_SELL_DIRECT_PRICING = "\n query OfferRequestWithSellDirectPricing($opendoorOfferRequestId: String!) {\n offerRequestWithSellDirectPricing(opendoorOfferRequestId: $opendoorOfferRequestId) {\n opendoorOfferRequestId\n offerStatus\n denialInfo {\n deniedAt\n code\n explanation\n }\n offerData {\n netProceeds\n sentAt\n expirationAt\n expirationAtDisplayDate\n mortgageBalance\n sellerName\n sellerEmail\n }\n }\n }\n";
|
|
10
14
|
/**
|
|
11
15
|
* Get prefilled home detail answers for a property.
|
|
12
16
|
* Returns MLS data, dwelling data, etc. for pre-populating questionnaire forms.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,q2BAoC/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iKAMvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/graphql/queries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,q2BAoC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sCAAsC,yfAqBlD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,2BAA2B,iKAMvC,CAAC"}
|
package/dist/graphql/queries.js
CHANGED
|
@@ -43,6 +43,31 @@ export const OFFER_REQUEST_QUERY = `
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
`;
|
|
46
|
+
/**
|
|
47
|
+
* Get offer request with net proceeds, mortgage balance, and seller info.
|
|
48
|
+
*/
|
|
49
|
+
export const OFFER_REQUEST_WITH_SELL_DIRECT_PRICING = `
|
|
50
|
+
query OfferRequestWithSellDirectPricing($opendoorOfferRequestId: String!) {
|
|
51
|
+
offerRequestWithSellDirectPricing(opendoorOfferRequestId: $opendoorOfferRequestId) {
|
|
52
|
+
opendoorOfferRequestId
|
|
53
|
+
offerStatus
|
|
54
|
+
denialInfo {
|
|
55
|
+
deniedAt
|
|
56
|
+
code
|
|
57
|
+
explanation
|
|
58
|
+
}
|
|
59
|
+
offerData {
|
|
60
|
+
netProceeds
|
|
61
|
+
sentAt
|
|
62
|
+
expirationAt
|
|
63
|
+
expirationAtDisplayDate
|
|
64
|
+
mortgageBalance
|
|
65
|
+
sellerName
|
|
66
|
+
sellerEmail
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
`;
|
|
46
71
|
/**
|
|
47
72
|
* Get prefilled home detail answers for a property.
|
|
48
73
|
* Returns MLS data, dwelling data, etc. for pre-populating questionnaire forms.
|
package/dist/index.d.ts
CHANGED
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
export declare const VERSION = "0.2.0";
|
|
10
10
|
export { OpendoorClient } from './client.js';
|
|
11
11
|
export type { OpendoorClientConfig } from './client.js';
|
|
12
|
-
export type { Address, AddressSuggestionsRequest, AddressSuggestionsResponse, CreateOfferRequest, CreateOfferResponse, UpdateOfferRequest, UpdateOfferResponse, GetOfferRequest, GetOfferResponse, OfferData, DenialInfo, OfferStatus, GetAssessmentSlotsRequest, GetAssessmentSlotsResponse, GetHomeDetailRequest, GetHomeDetailResponse, } from './types.js';
|
|
12
|
+
export type { Address, AddressSuggestionsRequest, AddressSuggestionsResponse, CreateOfferRequest, CreateOfferResponse, UpdateOfferRequest, UpdateOfferResponse, GetOfferRequest, GetOfferResponse, GetOfferWithPricingResponse, OfferData, OfferDataWithPricing, DenialInfo, OfferStatus, ExperimentalQuestionAnswer, GetAssessmentSlotsRequest, GetAssessmentSlotsResponse, GetHomeDetailRequest, GetHomeDetailResponse, } from './types.js';
|
|
13
13
|
export { ValidationError, OpendoorAPIError } from './errors.js';
|
|
14
14
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,YAAY,EACV,OAAO,EACP,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,WAAW,EACX,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGxD,YAAY,EACV,OAAO,EACP,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,SAAS,EACT,oBAAoB,EACpB,UAAU,EACV,WAAW,EACX,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -72,9 +72,25 @@ export interface UpdateOfferRequest {
|
|
|
72
72
|
homeEligibilityCriteriaUniqueOwnershipStructure?: boolean;
|
|
73
73
|
homeEligibilityCriteriaBelowMarketRateOwnership?: boolean;
|
|
74
74
|
homeEligibilityCriteriaRentControlledTenantOccupied?: boolean;
|
|
75
|
+
homeHoaFees?: number;
|
|
76
|
+
homeHasUpgrades?: boolean;
|
|
75
77
|
correlationId?: string;
|
|
78
|
+
/** Flexible experimental question answers (e.g., feature toggles, condition checkboxes) */
|
|
79
|
+
experimental?: ExperimentalQuestionAnswer[];
|
|
76
80
|
[key: string]: unknown;
|
|
77
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* A flexible question answer for the experimental field.
|
|
84
|
+
* Supports string arrays (multi-select) and double values (numeric).
|
|
85
|
+
*/
|
|
86
|
+
export interface ExperimentalQuestionAnswer {
|
|
87
|
+
/** Dot-notation question key (e.g., 'home.features.rooms.master_bed_bath') */
|
|
88
|
+
questionKey: string;
|
|
89
|
+
/** Array of string values for multi-select questions */
|
|
90
|
+
stringValues?: string[];
|
|
91
|
+
/** Numeric value for numeric questions */
|
|
92
|
+
doubleValue?: number;
|
|
93
|
+
}
|
|
78
94
|
export interface UpdateOfferResponse {
|
|
79
95
|
opendoorOfferRequestId: string;
|
|
80
96
|
offerStatus: OfferStatus;
|
|
@@ -113,6 +129,27 @@ export interface OfferData {
|
|
|
113
129
|
withdrawnAt?: string;
|
|
114
130
|
priceAlert?: 'PRICE_LOW' | 'NONE';
|
|
115
131
|
}
|
|
132
|
+
export interface GetOfferWithPricingResponse {
|
|
133
|
+
opendoorOfferRequestId: string;
|
|
134
|
+
offerStatus: OfferStatus;
|
|
135
|
+
denialInfo?: DenialInfo;
|
|
136
|
+
offerData?: OfferDataWithPricing;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Offer data with net proceeds from the Pricings service.
|
|
140
|
+
* Returned by offerRequestWithSellDirectPricing query.
|
|
141
|
+
*/
|
|
142
|
+
export interface OfferDataWithPricing {
|
|
143
|
+
/** Net proceeds in cents from Pricings GetPricing (sell_direct.net_proceeds) */
|
|
144
|
+
netProceeds: number | null;
|
|
145
|
+
sentAt?: string;
|
|
146
|
+
expirationAt?: string;
|
|
147
|
+
expirationAtDisplayDate?: string;
|
|
148
|
+
/** Mortgage balance from seller input answers */
|
|
149
|
+
mortgageBalance?: number | null;
|
|
150
|
+
sellerName?: string;
|
|
151
|
+
sellerEmail?: string;
|
|
152
|
+
}
|
|
116
153
|
export interface DenialInfo {
|
|
117
154
|
deniedAt: string;
|
|
118
155
|
code: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|