@sweepbright/api-client 0.25.3 → 0.26.3
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/README.md +19 -35
- package/dist/__tests__/channels.test.d.ts +1 -0
- package/dist/__tests__/leads.test.d.ts +1 -0
- package/dist/api-client.cjs.development.js +31 -18
- package/dist/api-client.cjs.development.js.map +1 -1
- package/dist/api-client.cjs.production.min.js +1 -1
- package/dist/api-client.cjs.production.min.js.map +1 -1
- package/dist/api-client.esm.js +31 -18
- package/dist/api-client.esm.js.map +1 -1
- package/dist/index.d.ts +8 -9
- package/dist/resources/channels.d.ts +12 -0
- package/dist/resources/leads.d.ts +7 -3
- package/package.json +1 -1
- package/dist/resources/events.d.ts +0 -7
package/README.md
CHANGED
|
@@ -86,7 +86,6 @@ publication change was scheduled successfully
|
|
|
86
86
|
- **estateId** - required - the id of the estate who's publication is going to be updated
|
|
87
87
|
- **channelAccountId** - required - the id of the channel account of the publication
|
|
88
88
|
- **config** - required - a configuration object, specific for each channel account type, which information about the publication config [link](link missing)
|
|
89
|
-
<<<<<<< HEAD
|
|
90
89
|
|
|
91
90
|
### Estates - unpublishPublication
|
|
92
91
|
|
|
@@ -123,11 +122,13 @@ Creates a buyer lead which is assigned to the office of the property it was inte
|
|
|
123
122
|
|
|
124
123
|
#### Options object
|
|
125
124
|
|
|
126
|
-
- **firstName** -
|
|
125
|
+
- **firstName** - optional - the given name of the lead
|
|
127
126
|
- **lastName** - required - the family name of the lead
|
|
128
|
-
- **email** - required - the email of the lead
|
|
129
|
-
- **phone** - required - the phone number of the lead
|
|
127
|
+
- **email** - required without phone - the email of the lead
|
|
128
|
+
- **phone** - required without email - the phone number of the lead
|
|
130
129
|
- **message** - required - a string with extra info
|
|
130
|
+
- **location_preference.country** - required with location_preference - the country code of the preferred location
|
|
131
|
+
- **location_preference.postal_codes** - required with location_preference - array of postal_codes
|
|
131
132
|
|
|
132
133
|
### Leads - createUnassignedLead
|
|
133
134
|
|
|
@@ -164,39 +165,22 @@ Returns a company. Takes a single `options` parameter and returns a promise with
|
|
|
164
165
|
#### Options object
|
|
165
166
|
|
|
166
167
|
- **companyId** - required - the id of the company to return
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
### Estates - unpublishPublication
|
|
170
|
-
|
|
171
|
-
Allows to remove an existing property publication, requires to be authorized
|
|
172
|
-
with a user token. Takes a single `options` parameter and returns an empty response if the
|
|
173
|
-
publication change was scheduled successfully
|
|
174
|
-
|
|
175
|
-
#### Options object
|
|
176
|
-
|
|
177
|
-
- **estateId** - required - the id of the estate who's publication is going to be updated
|
|
178
|
-
- **channelAccountId** - required - the id of the channel account of the publication
|
|
179
|
-
|
|
180
|
-
### Contacts - getOne
|
|
181
|
-
|
|
182
|
-
Takes a single `options` parameter and returns a promise with the contact data
|
|
183
|
-
|
|
184
|
-
#### Options object
|
|
185
|
-
|
|
186
|
-
- **contactId** - required - the id of the contact to return
|
|
187
|
-
|
|
188
|
-
### Contacts - getAll
|
|
189
|
-
|
|
190
|
-
Takes a single `options` parameter and returns a promise with a paginated list of contacts for a specific company
|
|
191
|
-
|
|
192
|
-
#### Options object
|
|
193
|
-
|
|
194
|
-
- **companyId** - required - the id of the company from which to get the contacts
|
|
195
|
-
- **page** - optional - when paginating the request, allows you specify the page you want to get
|
|
196
|
-
- **limit** - optional - when paginating the request, allows you specify the number of items per page (defaults to 10)
|
|
197
|
-
> > > > > > > 2c8f69d889eab75b1bb5afcdc3cca6b1d498fd4d
|
|
168
|
+
- **includes** - optional - a list of includes to return
|
|
198
169
|
|
|
199
170
|
## Development
|
|
200
171
|
|
|
201
172
|
This repository was initialized using [TSDX](https://github.com/formium/tsdx).
|
|
202
173
|
Check their docs for information about the different commands available.
|
|
174
|
+
|
|
175
|
+
## Publication
|
|
176
|
+
|
|
177
|
+
Publication is configured in Github Actions. The flow is the following: "Version Tag -> Github Release".
|
|
178
|
+
|
|
179
|
+
In `master` branch:
|
|
180
|
+
- run `yarn version` and select a new version
|
|
181
|
+
- yarn will create a commit and a version tag
|
|
182
|
+
- push the changes together with tag
|
|
183
|
+
- go to [Releases / Tags](https://github.com/sweepbright/api-client-js/tags)
|
|
184
|
+
- find your new tag and click "Create Release From Tag" button
|
|
185
|
+
- save the release
|
|
186
|
+
- go to [Actions](https://github.com/sweepbright/api-client-js/actions) and make sure the NPM package is being published
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -59,7 +59,8 @@ function leads (ctx) {
|
|
|
59
59
|
email: email,
|
|
60
60
|
phone: phone,
|
|
61
61
|
source_type: 'channel',
|
|
62
|
-
external_source: portal
|
|
62
|
+
external_source: portal,
|
|
63
|
+
location_preference: attributes.location_preference
|
|
63
64
|
});
|
|
64
65
|
}
|
|
65
66
|
|
|
@@ -75,6 +76,30 @@ function leads (ctx) {
|
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
function channels (ctx) {
|
|
79
|
+
/**
|
|
80
|
+
* @param channel_id Channel ID, for example, `"immoweb"` or `"immovlan"` etc
|
|
81
|
+
* @param reference_code Reference
|
|
82
|
+
* @param company_id Company ID
|
|
83
|
+
*/
|
|
84
|
+
var resolveReferences = function resolveReferences(channel_id, reference_code, company_id) {
|
|
85
|
+
try {
|
|
86
|
+
ctx.checkAuth(TokenType.API_TOKEN);
|
|
87
|
+
var endpoint = "/services/channel-references";
|
|
88
|
+
return Promise.resolve(ctx.httpClient.get(endpoint, {
|
|
89
|
+
params: {
|
|
90
|
+
channel_id: channel_id,
|
|
91
|
+
reference_code: reference_code,
|
|
92
|
+
company_id: company_id
|
|
93
|
+
}
|
|
94
|
+
}));
|
|
95
|
+
} catch (e) {
|
|
96
|
+
return Promise.reject(e);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated use channels.resolveReferences()
|
|
102
|
+
*/
|
|
78
103
|
var getPropertyIdFromReference = function getPropertyIdFromReference(channel, referenceId) {
|
|
79
104
|
try {
|
|
80
105
|
ctx.checkAuth(TokenType.API_TOKEN);
|
|
@@ -86,7 +111,8 @@ function channels (ctx) {
|
|
|
86
111
|
};
|
|
87
112
|
|
|
88
113
|
return {
|
|
89
|
-
getPropertyIdFromReference: getPropertyIdFromReference
|
|
114
|
+
getPropertyIdFromReference: getPropertyIdFromReference,
|
|
115
|
+
resolveReferences: resolveReferences
|
|
90
116
|
};
|
|
91
117
|
}
|
|
92
118
|
|
|
@@ -282,19 +308,6 @@ function contact_preferences(ctx) {
|
|
|
282
308
|
};
|
|
283
309
|
}
|
|
284
310
|
|
|
285
|
-
function events (ctx) {
|
|
286
|
-
function create(attributes) {
|
|
287
|
-
ctx.checkAuth(TokenType.API_TOKEN);
|
|
288
|
-
return ctx.httpClient.post("/services/events", attributes).then(function (res) {
|
|
289
|
-
return res.data;
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
return {
|
|
294
|
-
create: create
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
|
|
298
311
|
var _envHosts;
|
|
299
312
|
var envHosts = (_envHosts = {}, _envHosts[exports.Env.PRODUCTION] = 'https://api.sweepbright.com', _envHosts[exports.Env.STAGING] = 'https://api.staging.sweepbright.com', _envHosts[exports.Env.DEV] = 'https://api.dev.sweepbright.com', _envHosts);
|
|
300
313
|
|
|
@@ -307,7 +320,8 @@ function createClient(conf) {
|
|
|
307
320
|
var _auth = null;
|
|
308
321
|
var httpClient = axios.create({
|
|
309
322
|
baseURL: envHosts[env]
|
|
310
|
-
});
|
|
323
|
+
}); //TODO: getData here is an antipattern. Interceptor should not change a type of response
|
|
324
|
+
|
|
311
325
|
httpClient.interceptors.response.use(getData, handleRequestFailure);
|
|
312
326
|
|
|
313
327
|
if (version) {
|
|
@@ -375,8 +389,7 @@ function createClient(conf) {
|
|
|
375
389
|
channelAccounts: channelAccounts(ctx),
|
|
376
390
|
companies: companies(ctx),
|
|
377
391
|
contacts: contacts(ctx),
|
|
378
|
-
contactPreferences: contact_preferences(ctx)
|
|
379
|
-
events: events(ctx)
|
|
392
|
+
contactPreferences: contact_preferences(ctx)
|
|
380
393
|
};
|
|
381
394
|
return client;
|
|
382
395
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.cjs.development.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/resources/events.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName: string;\n lastName: string;\n propertyId: string;\n email: string;\n phone: string;\n message: string;\n portal: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n return { getPropertyIdFromReference };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function create(attributes: { event: string; data: any }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .post(`/services/events`, attributes)\n .then(res => res.data);\n }\n return {\n create,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\nimport events from './resources/events';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n events: events(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","createUnassignedLead","companyId","getPropertyIdFromReference","channel","referenceId","endpoint","get","getOne","estateId","params","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","create","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences","events"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-client.cjs.development.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName?: string;\n lastName: string;\n propertyId: string;\n email?: string;\n phone?: string;\n message: string;\n portal: string;\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n location_preference: attributes.location_preference,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ninterface ReferenceDetails {\n reference_code: string;\n estate_id: string;\n channel_id: string;\n channel_account_id: string;\n company_id: string;\n}\n\nexport interface ChannelsResolveReferencesResult {\n data: ReferenceDetails[];\n}\n\nexport default function(ctx: ClientCtx) {\n /**\n * @deprecated use channels.resolveReferences()\n */\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n /**\n * @param channel_id Channel ID, for example, `\"immoweb\"` or `\"immovlan\"` etc\n * @param reference_code Reference\n * @param company_id Company ID\n */\n async function resolveReferences(\n channel_id: string,\n reference_code: string,\n company_id?: string\n ): Promise<ChannelsResolveReferencesResult> {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n //TODO: getData here is an antipattern. Interceptor should not change a type of response\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","location_preference","createUnassignedLead","companyId","resolveReferences","channel_id","reference_code","company_id","endpoint","get","params","getPropertyIdFromReference","channel","referenceId","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n,r,c=e(require("axios")),i=e(require("tiny-invariant"));function s(e){return e.data}function a(e){if(e.response){var t=e.response,n=t.status,r=t.data,c=new Error(n+": "+JSON.stringify(r));return c.stack=(c.stack||"").split("\n").filter((function(e){return!e.includes("at handleRequestFailure")&&!e.includes("at processTicksAndRejections")})).join("\n"),c.status=n,c.data=r,Promise.reject(c)}return Promise.reject(e)}function o(e){return{createLead:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.put("estates/"+n.propertyId+"/leads",{first_name:n.firstName,last_name:n.lastName,message:n.message,email:n.email,phone:n.phone,source_type:"channel",external_source:n.portal})},createUnassignedLead:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("companies/"+n+"/leads",r)}}}function u(e){return{getPropertyIdFromReference:function(n,r){try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/channels/"+n+"/channel-references/"+r))}catch(e){return Promise.reject(e)}}}}function l(e){return{getOne:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/estates/"+n.estateId,{params:{includes:null!==(r=n.includes)&&void 0!==r?r:[]}}).then((function(e){return e.data}))},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/estates",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10,archived:n.archived}})},getUnits:function(n,r){var c=void 0===r?{}:r,i=c.page,s=c.limit;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/projects/"+n+"/units",{params:{page:i,limit:s}})},createPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.post("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},updatePublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.put("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},unpublishPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.delete("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads")},scheduleVisit:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("/properties/"+n+"/schedule-visit",r)},unstable_setPublicationUrl:function(n){var r=n.estateId,c=n.url;return e.checkAuth(t.API_TOKEN),e.httpClient.put("/estates/"+r+"/website-url",{published_url:c})}}}function h(e){return{getAll:function(n){var r=n.companyId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/companies/"+r+"/channel-accounts",{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},get:function(n){var r=n.channelAccountId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/channel-accounts/"+r,{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},getEstateHash:function(t){var n=t.estateId,r=t.channelAccountId;try{return Promise.resolve(e.httpClient.post("services/estates/"+n+"/channel-accounts/"+r+"/hash")).then((function(e){return e.data}))}catch(e){return Promise.reject(e)}}}}function p(e){return{get:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/companies/"+n.companyId,{params:{includes:null===(r=n.includes)||void 0===r?void 0:r.join(",")}})}}}function d(e){return{getOne:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId)},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/contacts",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10}})}}}function f(e){return{getAll:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId+"/preferences")}}}
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n,r,c=e(require("axios")),i=e(require("tiny-invariant"));function s(e){return e.data}function a(e){if(e.response){var t=e.response,n=t.status,r=t.data,c=new Error(n+": "+JSON.stringify(r));return c.stack=(c.stack||"").split("\n").filter((function(e){return!e.includes("at handleRequestFailure")&&!e.includes("at processTicksAndRejections")})).join("\n"),c.status=n,c.data=r,Promise.reject(c)}return Promise.reject(e)}function o(e){return{createLead:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.put("estates/"+n.propertyId+"/leads",{first_name:n.firstName,last_name:n.lastName,message:n.message,email:n.email,phone:n.phone,source_type:"channel",external_source:n.portal,location_preference:n.location_preference})},createUnassignedLead:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("companies/"+n+"/leads",r)}}}function u(e){return{getPropertyIdFromReference:function(n,r){try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/channels/"+n+"/channel-references/"+r))}catch(e){return Promise.reject(e)}},resolveReferences:function(n,r,c){try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/channel-references",{params:{channel_id:n,reference_code:r,company_id:c}}))}catch(e){return Promise.reject(e)}}}}function l(e){return{getOne:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/estates/"+n.estateId,{params:{includes:null!==(r=n.includes)&&void 0!==r?r:[]}}).then((function(e){return e.data}))},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/estates",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10,archived:n.archived}})},getUnits:function(n,r){var c=void 0===r?{}:r,i=c.page,s=c.limit;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/projects/"+n+"/units",{params:{page:i,limit:s}})},createPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.post("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},updatePublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.put("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},unpublishPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.delete("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads")},scheduleVisit:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("/properties/"+n+"/schedule-visit",r)},unstable_setPublicationUrl:function(n){var r=n.estateId,c=n.url;return e.checkAuth(t.API_TOKEN),e.httpClient.put("/estates/"+r+"/website-url",{published_url:c})}}}function h(e){return{getAll:function(n){var r=n.companyId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/companies/"+r+"/channel-accounts",{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},get:function(n){var r=n.channelAccountId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/channel-accounts/"+r,{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},getEstateHash:function(t){var n=t.estateId,r=t.channelAccountId;try{return Promise.resolve(e.httpClient.post("services/estates/"+n+"/channel-accounts/"+r+"/hash")).then((function(e){return e.data}))}catch(e){return Promise.reject(e)}}}}function p(e){return{get:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/companies/"+n.companyId,{params:{includes:null===(r=n.includes)||void 0===r?void 0:r.join(",")}})}}}function d(e){return{getOne:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId)},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/contacts",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10}})}}}function f(e){return{getAll:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId+"/preferences")}}}!function(e){e[e.USER_TOKEN=0]="USER_TOKEN",e[e.API_TOKEN=1]="API_TOKEN"}(t||(t={})),(n=exports.Env||(exports.Env={})).PRODUCTION="production",n.STAGING="staging",n.DEV="dev";var v=((r={})[exports.Env.PRODUCTION]="https://api.sweepbright.com",r[exports.Env.STAGING]="https://api.staging.sweepbright.com",r[exports.Env.DEV]="https://api.dev.sweepbright.com",r);exports.createClient=function(e){var n=e.clientId,r=e.clientSecret,m=e.env,A=void 0===m?exports.Env.PRODUCTION:m,g=e.version,I=null,_=c.create({baseURL:v[A]});_.interceptors.response.use(s,a),g&&(_.defaults.headers.common.Accept="application/vnd.sweepbright."+g+"+json");var E={httpClient:_,checkAuth:function(e){if(!I)throw new Error("client is not authenticated");if(I.type!==e)throw new Error("authenticated with invalid token type")}},P={authorize:function(e){void 0===e&&(e={});var c=e.scopes,s=void 0===c?["companies:read","properties:download","lead_info:write"]:c;return n||i(!1),r||i(!1),_.post("/auth/access-token",{client_id:n,client_secret:r,grant_type:"client_credentials",scope:s.join(",")}).then((function(e){var n=e.access_token,r=e.expires_in;return n||i(!1),r||i(!1),_.defaults.headers.common.Authorization="Bearer "+(I={token:n,expiresIn:r,type:t.API_TOKEN}).token,P}))},withUserToken:function(e){try{return _.defaults.headers.common.Authorization="Bearer "+(I={token:e,type:t.USER_TOKEN}).token,Promise.resolve(P)}catch(e){return Promise.reject(e)}},leads:o(E),channels:u(E),estates:l(E),channelAccounts:h(E),companies:p(E),contacts:d(E),contactPreferences:f(E)};return P};
|
|
2
2
|
//# sourceMappingURL=api-client.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.cjs.production.min.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/resources/events.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName: string;\n lastName: string;\n propertyId: string;\n email: string;\n phone: string;\n message: string;\n portal: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n return { getPropertyIdFromReference };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function create(attributes: { event: string; data: any }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .post(`/services/events`, attributes)\n .then(res => res.data);\n }\n return {\n create,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\nimport events from './resources/events';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n events: events(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","httpClient","put","propertyId","first_name","firstName","last_name","lastName","message","email","phone","source_type","external_source","portal","createUnassignedLead","companyId","getPropertyIdFromReference","channel","referenceId","get","getOne","estateId","params","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","_attributes$includes","contactId","contact_preferences","create","envHosts","PRODUCTION","STAGING","DEV","conf","clientId","clientSecret","env","version","_auth","axios","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences","events"],"mappings":"8IAaYA,EAkBAC,kEC/BIC,EAAQC,UACfA,EAASC,cAGFC,EAAqBC,MAM/BA,EAAUH,SAAU,OAGlBG,EADFH,SAAYI,IAAAA,OAAQH,IAAAA,KAGhBI,EAAa,IAAIC,MAASF,OAAWG,KAAKC,UAAUP,WAG1DI,EAAMI,OAASJ,EAAMI,OAAS,IAC3BC,MAAM,MACNC,QACC,SAACC,UACEA,EAAKC,SAAS,6BACdD,EAAKC,SAAS,mCAElBC,KAAK,MAERT,EAAMD,OAASA,EACfC,EAAMJ,KAAOA,EAENc,QAAQC,OAAOX,UAEfU,QAAQC,OAAOb,cC9BFc,SA+Df,CAAEC,oBA9DWC,UASlBF,EAAIG,UAAUvB,EAAUwB,WAYjBJ,EAAIK,WAAWC,eAFlBJ,EALFK,oBAOuD,CACvDC,WAHEN,EAPFO,UAWAC,UAJER,EANFS,SAWAC,QALEV,EAFFU,QAQAC,MANEX,EAJFW,MAWAC,MAPEZ,EAHFY,MAWAC,YAAa,UACbC,gBATEd,EADFe,UA4CiBC,8BA7BnBC,EACAjB,UAwBAF,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWC,iBAAiBa,WAAmBjB,gBC5DtCF,SAWf,CAAEoB,oCATPC,EACAC,cAEAtB,EAAIG,UAAUvB,EAAUwB,2BAGjBJ,EAAIK,WAAWkB,iBAFQF,yBAA8BC,oDCKxCtB,SA2Hf,CACLwB,gBA3HctB,gBAKdF,EAAIG,UAAUvB,EAAUwB,WAEjBJ,EAAIK,WACRkB,yBAAyBrB,EAAWuB,SAAY,CAC/CC,OAAQ,CACN9B,mBAAUM,EAAWN,wBAAY,MAGpC+B,MAAK,SAAAC,UAAOA,EAAI5C,SA+GnB6C,gBA5Gc3B,kBAMdF,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWkB,2BACGrB,EAAWiB,qBAClC,CACEO,OAAQ,CACNI,eAAM5B,EAAW4B,oBAAQ,EACzBC,gBAAO7B,EAAW6B,qBAAS,GAC3BC,SAAU9B,EAAW8B,aAgG3BC,kBAzFAC,sBACqD,KAAnDJ,IAAAA,KAAMC,IAAAA,aAER/B,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWkB,0BAA0BW,WAAmB,CACjER,OAAQ,CACNI,KAAAA,EACAC,MAAAA,MAmFJI,2BA9EyBjC,UAKzBF,EAAIG,UAAUvB,EAAUwD,YAEjBpC,EAAIK,WAAWgC,iBACRnC,EAAWuB,8BAA6BvB,EAAWoC,wBAC/D,CACEC,OAAQrC,EAAWqC,UAqEvBC,2BAhEyBtC,UAKzBF,EAAIG,UAAUvB,EAAUwD,YAEjBpC,EAAIK,WAAWC,gBACRJ,EAAWuB,8BAA6BvB,EAAWoC,wBAC/D,CACEC,OAAQrC,EAAWqC,UAuDvBE,8BAlD4BvC,UAI5BF,EAAIG,UAAUvB,EAAUwD,YAEjBpC,EAAIK,8BACGH,EAAWuB,8BAA6BvB,EAAWoC,0BA4CjEI,uBAvCAjB,EACAvB,UAUAF,EAAIG,UAAUvB,EAAUwB,WAEjBJ,EAAIK,WAAWC,mBACLmB,oBACfvB,IAyBFyC,2CApBAlB,IAAAA,SACAmB,IAAAA,WAKA5C,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWC,gBAAgBmB,iBAAwB,CAC5DoB,cAAeD,iBClIG5C,SAmCf,CAAE6B,uBAlCeV,IAAAA,qBACtBnB,EAAIG,UAAUvB,EAAUwB,2BAGjBJ,EAAIK,WAAWkB,2BAFkBJ,sBAEJ,CAClCO,OAAQ,CACN9B,SAAU,kDA4BC2B,oBAvBIe,IAAAA,4BACnBtC,EAAIG,UAAUvB,EAAUwB,2BAGjBJ,EAAIK,WAAWkB,kCAFyBe,EAEX,CAClCZ,OAAQ,CACN9B,SAAU,kDAiBMkD,8BAXpBrB,IAAAA,SACAa,IAAAA,4CAMuBtC,EAAIK,WAAWgC,yBADDZ,uBAA6Ba,2BAC5DvD,UACCA,EAASC,wDChCIgB,SAWf,CAAEuB,aAVIrB,gBACXF,EAAIG,UAAUvB,EAAUwB,WAEjBJ,EAAIK,WAAWkB,kBAAkBrB,EAAWiB,UAAa,CAC9DO,OAAQ,CACN9B,mBAAUM,EAAWN,6BAAXmD,EAAqBlD,KAAK,qBCNpBG,SAuBf,CACLwB,gBAvBctB,UACdF,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWkB,0BAA0BrB,EAAW8C,YAsB3DnB,gBAnBc3B,kBAKdF,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWkB,2BACGrB,EAAWiB,sBAClC,CACEO,OAAQ,CACNI,eAAM5B,EAAW4B,oBAAQ,EACzBC,gBAAO7B,EAAW6B,qBAAS,iBCjBbkB,EAAoBjD,SAQnC,CACL6B,gBARc3B,UACdF,EAAIG,UAAUvB,EAAUwB,WACjBJ,EAAIK,WAAWkB,0BACErB,EAAW8C,uCCJfhD,SAQf,CACLkD,gBARchD,UACdF,EAAIG,UAAUvB,EAAUwB,WAEjBJ,EAAIK,WACRgC,wBAAyBnC,GACzByB,MAAK,SAAAC,UAAOA,EAAI5C,WTKvB,SAAYJ,GACVA,+BACAA,6BAFF,CAAYA,IAAAA,QAkBAC,EAAAA,cAAAA,yCAEVA,oBACAA,YUrBF,IAAMsE,UACHtE,YAAIuE,YAAa,gCACjBvE,YAAIwE,SAAU,wCACdxE,YAAIyE,KAAM,0DAGb,SAAsBC,OACZC,EAA0DD,EAA1DC,SAAUC,EAAgDF,EAAhDE,eAAgDF,EAAlCG,IAAAA,aAAM7E,YAAIuE,aAAYO,EAAYJ,EAAZI,QAClDC,EAAqB,KAEnBvD,EAAawD,EAAMX,OAAO,CAC9BY,QAASX,EAASO,KAGpBrD,EAAW0D,aAAahF,SAASiF,IAAIlF,EAASG,GAC1C0E,IACFtD,EAAW4D,SAASC,QAAQC,OAA5B,sCAEmCR,eAG/B3D,EAAM,CACVK,WAAAA,EACAF,mBAAUiE,OACHR,QACG,IAAIvE,MAAM,kCAGduE,EAAMS,OAASD,QACX,IAAI/E,MAAM,2CAKhBiF,EAAS,CACbC,mBAAUhC,YAAAA,IAAAA,EAAmB,UAGvBA,EADFiC,OAAAA,aAAS,CAAC,iBAAkB,sBAAuB,4BAG3ChB,GAAViB,MACUhB,GAAVgB,MAEOpE,EACJgC,KAMC,qBAAsB,CACtBqC,UAAWlB,EACXmB,cAAelB,EACfmB,WAAY,qBACZC,MAAOL,EAAO3E,KAAK,OAEpB8B,MAAK,gBAAGmD,IAAAA,aAAcC,IAAAA,kBACXD,GAAVL,MACUM,GAAVN,MAQApE,EAAW4D,SAASC,QAAQC,OAA5B,yBAPAP,EAAQ,CACNoB,MAAOF,EACPG,UAAWF,EACXV,KAAMzF,EAAUwB,YAME4E,MACbV,MAGbY,uBAAsBC,cAMpB9E,EAAW4D,SAASC,QAAQC,OAA5B,yBALAP,EAAQ,CACNoB,MAAOG,EACPd,KAAMzF,EAAUwD,aAKE4C,sBAEbV,uCAETc,MAAOA,EAAMpF,GACbqF,SAAUA,EAASrF,GACnBsF,QAASA,EAAQtF,GACjBuF,gBAAiBA,EAAgBvF,GACjCwF,UAAWA,EAAUxF,GACrByF,SAAUA,EAASzF,GACnB0F,mBAAoBzC,EAAoBjD,GACxC2F,OAAQA,EAAO3F,WAGVsE"}
|
|
1
|
+
{"version":3,"file":"api-client.cjs.production.min.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName?: string;\n lastName: string;\n propertyId: string;\n email?: string;\n phone?: string;\n message: string;\n portal: string;\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n location_preference: attributes.location_preference,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ninterface ReferenceDetails {\n reference_code: string;\n estate_id: string;\n channel_id: string;\n channel_account_id: string;\n company_id: string;\n}\n\nexport interface ChannelsResolveReferencesResult {\n data: ReferenceDetails[];\n}\n\nexport default function(ctx: ClientCtx) {\n /**\n * @deprecated use channels.resolveReferences()\n */\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n /**\n * @param channel_id Channel ID, for example, `\"immoweb\"` or `\"immovlan\"` etc\n * @param reference_code Reference\n * @param company_id Company ID\n */\n async function resolveReferences(\n channel_id: string,\n reference_code: string,\n company_id?: string\n ): Promise<ChannelsResolveReferencesResult> {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n //TODO: getData here is an antipattern. Interceptor should not change a type of response\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","httpClient","put","propertyId","first_name","firstName","last_name","lastName","message","email","phone","source_type","external_source","portal","location_preference","createUnassignedLead","companyId","getPropertyIdFromReference","channel","referenceId","get","resolveReferences","channel_id","reference_code","company_id","params","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","_attributes$includes","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
|
package/dist/api-client.esm.js
CHANGED
|
@@ -55,7 +55,8 @@ function leads (ctx) {
|
|
|
55
55
|
email: email,
|
|
56
56
|
phone: phone,
|
|
57
57
|
source_type: 'channel',
|
|
58
|
-
external_source: portal
|
|
58
|
+
external_source: portal,
|
|
59
|
+
location_preference: attributes.location_preference
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
|
|
@@ -71,6 +72,30 @@ function leads (ctx) {
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
function channels (ctx) {
|
|
75
|
+
/**
|
|
76
|
+
* @param channel_id Channel ID, for example, `"immoweb"` or `"immovlan"` etc
|
|
77
|
+
* @param reference_code Reference
|
|
78
|
+
* @param company_id Company ID
|
|
79
|
+
*/
|
|
80
|
+
var resolveReferences = function resolveReferences(channel_id, reference_code, company_id) {
|
|
81
|
+
try {
|
|
82
|
+
ctx.checkAuth(TokenType.API_TOKEN);
|
|
83
|
+
var endpoint = "/services/channel-references";
|
|
84
|
+
return Promise.resolve(ctx.httpClient.get(endpoint, {
|
|
85
|
+
params: {
|
|
86
|
+
channel_id: channel_id,
|
|
87
|
+
reference_code: reference_code,
|
|
88
|
+
company_id: company_id
|
|
89
|
+
}
|
|
90
|
+
}));
|
|
91
|
+
} catch (e) {
|
|
92
|
+
return Promise.reject(e);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated use channels.resolveReferences()
|
|
98
|
+
*/
|
|
74
99
|
var getPropertyIdFromReference = function getPropertyIdFromReference(channel, referenceId) {
|
|
75
100
|
try {
|
|
76
101
|
ctx.checkAuth(TokenType.API_TOKEN);
|
|
@@ -82,7 +107,8 @@ function channels (ctx) {
|
|
|
82
107
|
};
|
|
83
108
|
|
|
84
109
|
return {
|
|
85
|
-
getPropertyIdFromReference: getPropertyIdFromReference
|
|
110
|
+
getPropertyIdFromReference: getPropertyIdFromReference,
|
|
111
|
+
resolveReferences: resolveReferences
|
|
86
112
|
};
|
|
87
113
|
}
|
|
88
114
|
|
|
@@ -278,19 +304,6 @@ function contact_preferences(ctx) {
|
|
|
278
304
|
};
|
|
279
305
|
}
|
|
280
306
|
|
|
281
|
-
function events (ctx) {
|
|
282
|
-
function create(attributes) {
|
|
283
|
-
ctx.checkAuth(TokenType.API_TOKEN);
|
|
284
|
-
return ctx.httpClient.post("/services/events", attributes).then(function (res) {
|
|
285
|
-
return res.data;
|
|
286
|
-
});
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return {
|
|
290
|
-
create: create
|
|
291
|
-
};
|
|
292
|
-
}
|
|
293
|
-
|
|
294
307
|
var _envHosts;
|
|
295
308
|
var envHosts = (_envHosts = {}, _envHosts[Env.PRODUCTION] = 'https://api.sweepbright.com', _envHosts[Env.STAGING] = 'https://api.staging.sweepbright.com', _envHosts[Env.DEV] = 'https://api.dev.sweepbright.com', _envHosts);
|
|
296
309
|
|
|
@@ -303,7 +316,8 @@ function createClient(conf) {
|
|
|
303
316
|
var _auth = null;
|
|
304
317
|
var httpClient = axios.create({
|
|
305
318
|
baseURL: envHosts[env]
|
|
306
|
-
});
|
|
319
|
+
}); //TODO: getData here is an antipattern. Interceptor should not change a type of response
|
|
320
|
+
|
|
307
321
|
httpClient.interceptors.response.use(getData, handleRequestFailure);
|
|
308
322
|
|
|
309
323
|
if (version) {
|
|
@@ -371,8 +385,7 @@ function createClient(conf) {
|
|
|
371
385
|
channelAccounts: channelAccounts(ctx),
|
|
372
386
|
companies: companies(ctx),
|
|
373
387
|
contacts: contacts(ctx),
|
|
374
|
-
contactPreferences: contact_preferences(ctx)
|
|
375
|
-
events: events(ctx)
|
|
388
|
+
contactPreferences: contact_preferences(ctx)
|
|
376
389
|
};
|
|
377
390
|
return client;
|
|
378
391
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.esm.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/resources/events.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName: string;\n lastName: string;\n propertyId: string;\n email: string;\n phone: string;\n message: string;\n portal: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n return { getPropertyIdFromReference };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function create(attributes: { event: string; data: any }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .post(`/services/events`, attributes)\n .then(res => res.data);\n }\n return {\n create,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\nimport events from './resources/events';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n events: events(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","createUnassignedLead","companyId","getPropertyIdFromReference","channel","referenceId","endpoint","get","getOne","estateId","params","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","create","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences","events"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-client.esm.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName?: string;\n lastName: string;\n propertyId: string;\n email?: string;\n phone?: string;\n message: string;\n portal: string;\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n location_preference: attributes.location_preference,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ninterface ReferenceDetails {\n reference_code: string;\n estate_id: string;\n channel_id: string;\n channel_account_id: string;\n company_id: string;\n}\n\nexport interface ChannelsResolveReferencesResult {\n data: ReferenceDetails[];\n}\n\nexport default function(ctx: ClientCtx) {\n /**\n * @deprecated use channels.resolveReferences()\n */\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n /**\n * @param channel_id Channel ID, for example, `\"immoweb\"` or `\"immovlan\"` etc\n * @param reference_code Reference\n * @param company_id Company ID\n */\n async function resolveReferences(\n channel_id: string,\n reference_code: string,\n company_id?: string\n ): Promise<ChannelsResolveReferencesResult> {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n //TODO: getData here is an antipattern. Interceptor should not change a type of response\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","location_preference","createUnassignedLead","companyId","resolveReferences","channel_id","reference_code","company_id","endpoint","get","params","getPropertyIdFromReference","channel","referenceId","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,13 +4,17 @@ declare function createClient(conf: ClientConf): {
|
|
|
4
4
|
withUserToken: (accessToken: string) => Promise<any>;
|
|
5
5
|
leads: {
|
|
6
6
|
createLead: (attributes: {
|
|
7
|
-
firstName
|
|
7
|
+
firstName?: string | undefined;
|
|
8
8
|
lastName: string;
|
|
9
9
|
propertyId: string;
|
|
10
|
-
email
|
|
11
|
-
phone
|
|
10
|
+
email?: string | undefined;
|
|
11
|
+
phone?: string | undefined;
|
|
12
12
|
message: string;
|
|
13
13
|
portal: string;
|
|
14
|
+
location_preference?: {
|
|
15
|
+
country: string;
|
|
16
|
+
postal_codes: string[];
|
|
17
|
+
} | undefined;
|
|
14
18
|
}) => Promise<import("axios").AxiosResponse<any>>;
|
|
15
19
|
createUnassignedLead: (companyId: string, attributes: {
|
|
16
20
|
first_name: string;
|
|
@@ -38,6 +42,7 @@ declare function createClient(conf: ClientConf): {
|
|
|
38
42
|
};
|
|
39
43
|
channels: {
|
|
40
44
|
getPropertyIdFromReference: (channel: string, referenceId: string) => Promise<import("axios").AxiosResponse<any>>;
|
|
45
|
+
resolveReferences: (channel_id: string, reference_code: string, company_id?: string | undefined) => Promise<import("./resources/channels").ChannelsResolveReferencesResult>;
|
|
41
46
|
};
|
|
42
47
|
estates: {
|
|
43
48
|
getOne: (attributes: {
|
|
@@ -118,12 +123,6 @@ declare function createClient(conf: ClientConf): {
|
|
|
118
123
|
contactId: string;
|
|
119
124
|
}) => Promise<import("axios").AxiosResponse<any>>;
|
|
120
125
|
};
|
|
121
|
-
events: {
|
|
122
|
-
create: (attributes: {
|
|
123
|
-
type: string;
|
|
124
|
-
data: any;
|
|
125
|
-
}) => Promise<any>;
|
|
126
|
-
};
|
|
127
126
|
};
|
|
128
127
|
interface Client extends ReturnType<typeof createClient> {
|
|
129
128
|
}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { ClientCtx } from '../types';
|
|
2
|
+
interface ReferenceDetails {
|
|
3
|
+
reference_code: string;
|
|
4
|
+
estate_id: string;
|
|
5
|
+
channel_id: string;
|
|
6
|
+
channel_account_id: string;
|
|
7
|
+
company_id: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ChannelsResolveReferencesResult {
|
|
10
|
+
data: ReferenceDetails[];
|
|
11
|
+
}
|
|
2
12
|
export default function (ctx: ClientCtx): {
|
|
3
13
|
getPropertyIdFromReference: (channel: string, referenceId: string) => Promise<import("axios").AxiosResponse<any>>;
|
|
14
|
+
resolveReferences: (channel_id: string, reference_code: string, company_id?: string | undefined) => Promise<ChannelsResolveReferencesResult>;
|
|
4
15
|
};
|
|
16
|
+
export {};
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { ClientCtx } from '../types';
|
|
2
2
|
export default function (ctx: ClientCtx): {
|
|
3
3
|
createLead: (attributes: {
|
|
4
|
-
firstName
|
|
4
|
+
firstName?: string;
|
|
5
5
|
lastName: string;
|
|
6
6
|
propertyId: string;
|
|
7
|
-
email
|
|
8
|
-
phone
|
|
7
|
+
email?: string;
|
|
8
|
+
phone?: string;
|
|
9
9
|
message: string;
|
|
10
10
|
portal: string;
|
|
11
|
+
location_preference?: {
|
|
12
|
+
country: string;
|
|
13
|
+
postal_codes: string[];
|
|
14
|
+
};
|
|
11
15
|
}) => Promise<import("axios").AxiosResponse<any>>;
|
|
12
16
|
createUnassignedLead: (companyId: string, attributes: {
|
|
13
17
|
first_name: string;
|
package/package.json
CHANGED