@sweepbright/api-client 0.25.2 → 0.26.2

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 CHANGED
@@ -86,7 +86,7 @@ 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
89
+ <<<<<<< HEAD
90
90
 
91
91
  ### Estates - unpublishPublication
92
92
 
@@ -123,11 +123,13 @@ Creates a buyer lead which is assigned to the office of the property it was inte
123
123
 
124
124
  #### Options object
125
125
 
126
- - **firstName** - required - the given name of the lead
126
+ - **firstName** - optional - the given name of the lead
127
127
  - **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
128
+ - **email** - required without phone - the email of the lead
129
+ - **phone** - required without email - the phone number of the lead
130
130
  - **message** - required - a string with extra info
131
+ - **location_preference.country** - required with location_preference - the country code of the preferred location
132
+ - **location_preference.postal_codes** - required with location_preference - array of postal_codes
131
133
 
132
134
  ### Leads - createUnassignedLead
133
135
 
@@ -164,7 +166,8 @@ Returns a company. Takes a single `options` parameter and returns a promise with
164
166
  #### Options object
165
167
 
166
168
  - **companyId** - required - the id of the company to return
167
- - # **includes** - optional - a list of includes to return
169
+ - **includes** - optional - a list of includes to return
170
+ =======
168
171
 
169
172
  ### Estates - unpublishPublication
170
173
 
@@ -194,7 +197,7 @@ Takes a single `options` parameter and returns a promise with a paginated list o
194
197
  - **companyId** - required - the id of the company from which to get the contacts
195
198
  - **page** - optional - when paginating the request, allows you specify the page you want to get
196
199
  - **limit** - optional - when paginating the request, allows you specify the number of items per page (defaults to 10)
197
- > > > > > > > 2c8f69d889eab75b1bb5afcdc3cca6b1d498fd4d
200
+ >>>>>>> 2c8f69d889eab75b1bb5afcdc3cca6b1d498fd4d
198
201
 
199
202
  ## Development
200
203
 
@@ -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
 
@@ -375,8 +388,7 @@ function createClient(conf) {
375
388
  channelAccounts: channelAccounts(ctx),
376
389
  companies: companies(ctx),
377
390
  contacts: contacts(ctx),
378
- contactPreferences: contact_preferences(ctx),
379
- events: events(ctx)
391
+ contactPreferences: contact_preferences(ctx)
380
392
  };
381
393
  return client;
382
394
  }
@@ -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: { type: 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 ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get<ChannelsResolveReferencesResult>(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 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")}}}function v(e){return{create:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.post("/services/events",n).then((function(e){return e.data}))}}}!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 m=((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,A=e.env,g=void 0===A?exports.Env.PRODUCTION:A,I=e.version,E=null,P=c.create({baseURL:m[g]});P.interceptors.response.use(s,a),I&&(P.defaults.headers.common.Accept="application/vnd.sweepbright."+I+"+json");var _={httpClient:P,checkAuth:function(e){if(!E)throw new Error("client is not authenticated");if(E.type!==e)throw new Error("authenticated with invalid token type")}},O={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),P.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),P.defaults.headers.common.Authorization="Bearer "+(E={token:n,expiresIn:r,type:t.API_TOKEN}).token,O}))},withUserToken:function(e){try{return P.defaults.headers.common.Authorization="Bearer "+(E={token:e,type:t.USER_TOKEN}).token,Promise.resolve(O)}catch(e){return Promise.reject(e)}},leads:o(_),channels:u(_),estates:l(_),channelAccounts:h(_),companies:p(_),contacts:d(_),contactPreferences:f(_),events:v(_)};return O};
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: { type: 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":"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"}
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 ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get<ChannelsResolveReferencesResult>(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 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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"}
@@ -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
 
@@ -371,8 +384,7 @@ function createClient(conf) {
371
384
  channelAccounts: channelAccounts(ctx),
372
385
  companies: companies(ctx),
373
386
  contacts: contacts(ctx),
374
- contactPreferences: contact_preferences(ctx),
375
- events: events(ctx)
387
+ contactPreferences: contact_preferences(ctx)
376
388
  };
377
389
  return client;
378
390
  }
@@ -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: { type: 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 ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get<ChannelsResolveReferencesResult>(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 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: string;
7
+ firstName?: string | undefined;
8
8
  lastName: string;
9
9
  propertyId: string;
10
- email: string;
11
- phone: string;
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("axios").AxiosResponse<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<import("axios").AxiosResponse<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: string;
4
+ firstName?: string;
5
5
  lastName: string;
6
6
  propertyId: string;
7
- email: string;
8
- phone: string;
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
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.25.2",
2
+ "version": "0.26.2",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -1,7 +0,0 @@
1
- import { ClientCtx } from '../types';
2
- export default function (ctx: ClientCtx): {
3
- create: (attributes: {
4
- type: string;
5
- data: any;
6
- }) => Promise<any>;
7
- };