@sweepbright/api-client 0.26.2 → 0.26.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -86,7 +86,6 @@ publication change was scheduled successfully
86
86
  - **estateId** - required - the id of the estate who's publication is going to be updated
87
87
  - **channelAccountId** - required - the id of the channel account of the publication
88
88
  - **config** - required - a configuration object, specific for each channel account type, which information about the publication config [link](link missing)
89
- <<<<<<< HEAD
90
89
 
91
90
  ### Estates - unpublishPublication
92
91
 
@@ -167,39 +166,21 @@ Returns a company. Takes a single `options` parameter and returns a promise with
167
166
 
168
167
  - **companyId** - required - the id of the company to return
169
168
  - **includes** - optional - a list of includes to return
170
- =======
171
-
172
- ### Estates - unpublishPublication
173
-
174
- Allows to remove an existing property publication, requires to be authorized
175
- with a user token. Takes a single `options` parameter and returns an empty response if the
176
- publication change was scheduled successfully
177
-
178
- #### Options object
179
-
180
- - **estateId** - required - the id of the estate who's publication is going to be updated
181
- - **channelAccountId** - required - the id of the channel account of the publication
182
-
183
- ### Contacts - getOne
184
-
185
- Takes a single `options` parameter and returns a promise with the contact data
186
-
187
- #### Options object
188
-
189
- - **contactId** - required - the id of the contact to return
190
-
191
- ### Contacts - getAll
192
-
193
- Takes a single `options` parameter and returns a promise with a paginated list of contacts for a specific company
194
-
195
- #### Options object
196
-
197
- - **companyId** - required - the id of the company from which to get the contacts
198
- - **page** - optional - when paginating the request, allows you specify the page you want to get
199
- - **limit** - optional - when paginating the request, allows you specify the number of items per page (defaults to 10)
200
- >>>>>>> 2c8f69d889eab75b1bb5afcdc3cca6b1d498fd4d
201
169
 
202
170
  ## Development
203
171
 
204
172
  This repository was initialized using [TSDX](https://github.com/formium/tsdx).
205
173
  Check their docs for information about the different commands available.
174
+
175
+ ## Publication
176
+
177
+ Publication is configured in Github Actions. The flow is the following: "Version Tag -> Github Release".
178
+
179
+ In `master` branch:
180
+ - run `yarn version` and select a new version
181
+ - yarn will create a commit and a version tag
182
+ - push the changes together with tag
183
+ - go to [Releases / Tags](https://github.com/sweepbright/api-client-js/tags)
184
+ - find your new tag and click "Create Release From Tag" button
185
+ - save the release
186
+ - go to [Actions](https://github.com/sweepbright/api-client-js/actions) and make sure the NPM package is being published
@@ -320,7 +320,8 @@ function createClient(conf) {
320
320
  var _auth = null;
321
321
  var httpClient = axios.create({
322
322
  baseURL: envHosts[env]
323
- });
323
+ }); //TODO: getData here is an antipattern. Interceptor should not change a type of response
324
+
324
325
  httpClient.interceptors.response.use(getData, handleRequestFailure);
325
326
 
326
327
  if (version) {
@@ -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/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":";;;;;;;;;AAaA,IAAYA,SAAZ;;AAAA,WAAYA;AACVA,EAAAA,sCAAA,eAAA;AACAA,EAAAA,qCAAA,cAAA;AACD,CAHD,EAAYA,SAAS,KAATA,SAAS,KAAA,CAArB;;AAkBA,WAAYC;AACVA,EAAAA,iBAAA,eAAA;AACAA,EAAAA,cAAA,YAAA;AACAA,EAAAA,UAAA,QAAA;AACD,CAJD,EAAYA,WAAG,KAAHA,WAAG,KAAA,CAAf;;SC/BgBC,QAAQC;AACtB,SAAOA,QAAQ,CAACC,IAAhB;AACD;AAED,SAAgBC,qBAAqBC;AAMnC,MAAIA,SAAS,CAACH,QAAd,EAAwB;AAAA,8BAGlBG,SAHkB,CAEpBH,QAFoB;AAAA,QAERI,MAFQ,uBAERA,MAFQ;AAAA,QAEAH,IAFA,uBAEAA,IAFA;AAKtB,QAAMI,KAAK,GAAQ,IAAIC,KAAJ,CAAaF,MAAb,UAAwBG,IAAI,CAACC,SAAL,CAAeP,IAAf,CAAxB,CAAnB,CALsB;AAOtB;;AACAI,IAAAA,KAAK,CAACI,KAAN,GAAc,CAACJ,KAAK,CAACI,KAAN,IAAe,EAAhB,EACXC,KADW,CACL,IADK,EAEXC,MAFW,CAGV,UAACC,IAAD;AAAA,aACE,CAACA,IAAI,CAACC,QAAL,CAAc,yBAAd,CAAD,IACA,CAACD,IAAI,CAACC,QAAL,CAAc,8BAAd,CAFH;AAAA,KAHU,EAOXC,IAPW,CAON,IAPM,CAAd;AASAT,IAAAA,KAAK,CAACD,MAAN,GAAeA,MAAf;AACAC,IAAAA,KAAK,CAACJ,IAAN,GAAaA,IAAb;AAEA,WAAOc,OAAO,CAACC,MAAR,CAAeX,KAAf,CAAP;AACD,GArBD,MAqBO;AACL,WAAOU,OAAO,CAACC,MAAR,CAAeb,SAAf,CAAP;AACD;AACF;;gBChCuBc;AACtB,WAASC,UAAT,CAAoBC,UAApB;AAaEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;QAGEC,YAOEH,WAPFG;QACAC,WAMEJ,WANFI;QACAC,aAKEL,WALFK;QACAC,QAIEN,WAJFM;QACAC,QAGEP,WAHFO;QACAC,UAEER,WAFFQ;QACAC,SACET,WADFS;AAGF,WAAOX,GAAG,CAACY,UAAJ,CAAeC,GAAf,cAA8BN,UAA9B,aAAkD;AACvDO,MAAAA,UAAU,EAAET,SAD2C;AAEvDU,MAAAA,SAAS,EAAET,QAF4C;AAGvDI,MAAAA,OAAO,EAAPA,OAHuD;AAIvDF,MAAAA,KAAK,EAALA,KAJuD;AAKvDC,MAAAA,KAAK,EAALA,KALuD;AAMvDO,MAAAA,WAAW,EAAE,SAN0C;AAOvDC,MAAAA,eAAe,EAAEN,MAPsC;AAQvDO,MAAAA,mBAAmB,EAAEhB,UAAU,CAACgB;AARuB,KAAlD,CAAP;AAUD;;AAED,WAASC,oBAAT,CACEC,SADF,EAEElB,UAFF;AA0BEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAeC,GAAf,gBAAgCO,SAAhC,aAAmDlB,UAAnD,CAAP;AACD;;AAED,SAAO;AAAED,IAAAA,UAAU,EAAVA,UAAF;AAAckB,IAAAA,oBAAoB,EAApBA;AAAd,GAAP;AACD;;mBCzDuBnB;AActB;;;;;MAKeqB,6BAAAA,kBACbC,YACAC,gBACAC;;AAEAxB,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMqB,QAAQ,iCAAd;AAEA,6BAAOzB,GAAG,CAACY,UAAJ,CAAec,GAAf,CAAoDD,QAApD,EAA8D;AACnEE,QAAAA,MAAM,EAAE;AACNL,UAAAA,UAAU,EAAVA,UADM;AAENC,UAAAA,cAAc,EAAdA,cAFM;AAGNC,UAAAA,UAAU,EAAVA;AAHM;AAD2D,OAA9D,CAAP;AAOD;;;;;AAjCD;;;MAGeI,sCAAAA,2BACbC,SACAC;;AAEA9B,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMqB,QAAQ,kBAAgBI,OAAhB,4BAA8CC,WAA5D;AAEA,6BAAO9B,GAAG,CAACY,UAAJ,CAAec,GAAf,CAAmBD,QAAnB,CAAP;AACD;;;;;AAwBD,SAAO;AAAEG,IAAAA,0BAA0B,EAA1BA,0BAAF;AAA8BP,IAAAA,iBAAiB,EAAjBA;AAA9B,GAAP;AACD;;kBCtCuBrB;AACtB,WAAS+B,MAAT,CAAgB7B,UAAhB;;;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AAEA,WAAOJ,GAAG,CAACY,UAAJ,CACJc,GADI,wBACqBxB,UAAU,CAAC8B,QADhC,EAC4C;AAC/CL,MAAAA,MAAM,EAAE;AACN/B,QAAAA,QAAQ,0BAAEM,UAAU,CAACN,QAAb,uEAAyB;AAD3B;AADuC,KAD5C,EAMJqC,IANI,CAMC,UAAAC,GAAG;AAAA,aAAIA,GAAG,CAAClD,IAAR;AAAA,KANJ,CAAP;AAOD;;AAED,WAASmD,MAAT,CAAgBjC,UAAhB;;;AAMEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAec,GAAf,0BACkBxB,UAAU,CAACkB,SAD7B,eAEL;AACEO,MAAAA,MAAM,EAAE;AACNS,QAAAA,IAAI,sBAAElC,UAAU,CAACkC,IAAb,+DAAqB,CADnB;AAENC,QAAAA,KAAK,uBAAEnC,UAAU,CAACmC,KAAb,iEAAsB,EAFrB;AAGNC,QAAAA,QAAQ,EAAEpC,UAAU,CAACoC;AAHf;AADV,KAFK,CAAP;AAUD;;AAED,WAASC,QAAT,CACEC,SADF;kCAEuD;QAAnDJ,YAAAA;QAAMC,aAAAA;;AAERrC,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAec,GAAf,yBAAyCc,SAAzC,aAA4D;AACjEb,MAAAA,MAAM,EAAE;AACNS,QAAAA,IAAI,EAAJA,IADM;AAENC,QAAAA,KAAK,EAALA;AAFM;AADyD,KAA5D,CAAP;AAMD;;AAED,WAASI,iBAAT,CAA2BvC,UAA3B;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAAC8D,UAAxB;AAEA,WAAO1C,GAAG,CAACY,UAAJ,CAAe+B,IAAf,eACOzC,UAAU,CAAC8B,QADlB,0BAC+C9B,UAAU,CAAC0C,gBAD1D,WAEL;AACEC,MAAAA,MAAM,EAAE3C,UAAU,CAAC2C;AADrB,KAFK,CAAP;AAMD;;AAED,WAASC,iBAAT,CAA2B5C,UAA3B;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAAC8D,UAAxB;AAEA,WAAO1C,GAAG,CAACY,UAAJ,CAAeC,GAAf,eACOX,UAAU,CAAC8B,QADlB,0BAC+C9B,UAAU,CAAC0C,gBAD1D,WAEL;AACEC,MAAAA,MAAM,EAAE3C,UAAU,CAAC2C;AADrB,KAFK,CAAP;AAMD;;AAED,WAASE,oBAAT,CAA8B7C,UAA9B;AAIEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAAC8D,UAAxB;AAEA,WAAO1C,GAAG,CAACY,UAAJ,yBACOV,UAAU,CAAC8B,QADlB,0BAC+C9B,UAAU,CAAC0C,gBAD1D,UAAP;AAGD;;AAED,WAASI,aAAT,CACEhB,QADF,EAEE9B,UAFF;AAYEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AAEA,WAAOJ,GAAG,CAACY,UAAJ,CAAeC,GAAf,kBACUmB,QADV,sBAEL9B,UAFK,CAAP;AAID;;AAED,WAAS+C,0BAAT;QACEjB,iBAAAA;QACAkB,YAAAA;AAKAlD,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAeC,GAAf,eAA+BmB,QAA/B,mBAAuD;AAC5DmB,MAAAA,aAAa,EAAED;AAD6C,KAAvD,CAAP;AAGD;;AAED,SAAO;AACLnB,IAAAA,MAAM,EAANA,MADK;AAELI,IAAAA,MAAM,EAANA,MAFK;AAGLI,IAAAA,QAAQ,EAARA,QAHK;AAILE,IAAAA,iBAAiB,EAAjBA,iBAJK;AAKLK,IAAAA,iBAAiB,EAAjBA,iBALK;AAMLC,IAAAA,oBAAoB,EAApBA,oBANK;AAOLC,IAAAA,aAAa,EAAbA,aAPK;AAQLC,IAAAA,0BAA0B,EAA1BA;AARK,GAAP;AAUD;;0BChJuBjD;MAuBPoD,yBAAAA;QACbpB,iBAAAA;QACAY,yBAAAA;;;AAKA,UAAMnB,QAAQ,yBAAuBO,QAAvB,0BAAoDY,gBAApD,UAAd;6BACuB5C,GAAG,CAACY,UAAJ,CAAe+B,IAAf,CAAoBlB,QAApB,kBAAjB1C;AACN,eAAOA,QAAQ,CAACC,IAAhB;;AACD;;;;;MArBc0C,eAAAA;QAAMkB,yBAAAA;;;AACnB5C,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMqB,QAAQ,mCAAiCmB,gBAA/C;AAEA,6BAAO5C,GAAG,CAACY,UAAJ,CAAec,GAAf,CAAmBD,QAAnB,EAA6B;AAClCE,QAAAA,MAAM,EAAE;AACN/B,UAAAA,QAAQ,EAAE;AADJ;AAD0B,OAA7B,CAAP;AAKD;;;;;MApBcuC,kBAAAA;QAASf,iBAAAA;;;AACtBpB,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMqB,QAAQ,4BAA0BL,SAA1B,sBAAd;AAEA,6BAAOpB,GAAG,CAACY,UAAJ,CAAec,GAAf,CAAmBD,QAAnB,EAA6B;AAClCE,QAAAA,MAAM,EAAE;AACN/B,UAAAA,QAAQ,EAAE;AADJ;AAD0B,OAA7B,CAAP;AAKD;;;;;AAyBD,SAAO;AAAEuC,IAAAA,MAAM,EAANA,MAAF;AAAUT,IAAAA,GAAG,EAAHA,GAAV;AAAe0B,IAAAA,aAAa,EAAbA;AAAf,GAAP;AACD;;oBCpCuBpD;AACtB,WAAS0B,GAAT,CAAaxB,UAAb;;;AACEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AAEA,WAAOJ,GAAG,CAACY,UAAJ,CAAec,GAAf,iBAAiCxB,UAAU,CAACkB,SAA5C,EAAyD;AAC9DO,MAAAA,MAAM,EAAE;AACN/B,QAAAA,QAAQ,0BAAEM,UAAU,CAACN,QAAb,yDAAE,qBAAqBC,IAArB,CAA0B,GAA1B;AADJ;AADsD,KAAzD,CAAP;AAKD;;AAED,SAAO;AAAE6B,IAAAA,GAAG,EAAHA;AAAF,GAAP;AACD;;mBCZuB1B;AACtB,WAAS+B,MAAT,CAAgB7B,UAAhB;AACEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAec,GAAf,yBAAyCxB,UAAU,CAACmD,SAApD,CAAP;AACD;;AAED,WAASlB,MAAT,CAAgBjC,UAAhB;;;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAec,GAAf,0BACkBxB,UAAU,CAACkB,SAD7B,gBAEL;AACEO,MAAAA,MAAM,EAAE;AACNS,QAAAA,IAAI,sBAAElC,UAAU,CAACkC,IAAb,+DAAqB,CADnB;AAENC,QAAAA,KAAK,uBAAEnC,UAAU,CAACmC,KAAb,iEAAsB;AAFrB;AADV,KAFK,CAAP;AASD;;AAED,SAAO;AACLN,IAAAA,MAAM,EAANA,MADK;AAELI,IAAAA,MAAM,EAANA;AAFK,GAAP;AAID;;SC3BuBmB,oBAAoBtD;AAC1C,WAASmC,MAAT,CAAgBjC,UAAhB;AACEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAec,GAAf,yBACiBxB,UAAU,CAACmD,SAD5B,kBAAP;AAGD;;AAED,SAAO;AACLlB,IAAAA,MAAM,EAANA;AADK,GAAP;AAGD;;;ACDD,IAAMoB,QAAQ,8BACX1E,WAAG,CAAC2E,UADO,IACM,6BADN,YAEX3E,WAAG,CAAC4E,OAFO,IAEG,qCAFH,YAGX5E,WAAG,CAAC6E,GAHO,IAGD,iCAHC,YAAd;;AAMA,SAASC,YAAT,CAAsBC,IAAtB;MACUC,WAA0DD,KAA1DC;MAAUC,eAAgDF,KAAhDE;kBAAgDF,KAAlCG;MAAAA,6BAAMlF,WAAG,CAAC2E;MAAYQ,UAAYJ,KAAZI;AACtD,MAAIC,KAAK,GAAgB,IAAzB;AAEA,MAAMrD,UAAU,GAAGsD,KAAK,CAACC,MAAN,CAAa;AAC9BC,IAAAA,OAAO,EAAEb,QAAQ,CAACQ,GAAD;AADa,GAAb,CAAnB;AAIAnD,EAAAA,UAAU,CAACyD,YAAX,CAAwBtF,QAAxB,CAAiCuF,GAAjC,CAAqCxF,OAArC,EAA8CG,oBAA9C;;AACA,MAAI+E,OAAJ,EAAa;AACXpD,IAAAA,UAAU,CAAC2D,QAAX,CAAoBC,OAApB,CAA4BC,MAA5B,CACE,QADF,qCAEmCT,OAFnC;AAGD;;AAED,MAAMhE,GAAG,GAAG;AACVY,IAAAA,UAAU,EAAVA,UADU;AAEVT,IAAAA,SAFU,qBAEAuE,SAFA;AAGR,UAAI,CAACT,KAAL,EAAY;AACV,cAAM,IAAI5E,KAAJ,CAAU,6BAAV,CAAN;AACD;;AAED,UAAI4E,KAAK,CAACU,IAAN,KAAeD,SAAnB,EAA8B;AAC5B,cAAM,IAAIrF,KAAJ,CAAU,uCAAV,CAAN;AACD;AACF;AAVS,GAAZ;AAaA,MAAMuF,MAAM,GAAG;AACbC,IAAAA,SADa,qBACHhC,MADG;UACHA;AAAAA,QAAAA,SAAmB;;;oBAGvBA;mCADFiC;UAAAA,qCAAS,CAAC,gBAAD,EAAmB,qBAAnB,EAA0C,iBAA1C;AAGX,OAAUjB,QAAV,IAAAkB,SAAS,QAAW,mBAAX,CAAT,CAAA;AACA,OAAUjB,YAAV,IAAAiB,SAAS,QAAe,uBAAf,CAAT,CAAA;AAEA,aAAOnE,UAAU,CACd+B,IADI,CAOH,oBAPG,EAOmB;AACtBqC,QAAAA,SAAS,EAAEnB,QADW;AAEtBoB,QAAAA,aAAa,EAAEnB,YAFO;AAGtBoB,QAAAA,UAAU,EAAE,oBAHU;AAItBC,QAAAA,KAAK,EAAEL,MAAM,CAACjF,IAAP,CAAY,GAAZ;AAJe,OAPnB,EAaJoC,IAbI,CAaC;YAAGmD,oBAAAA;YAAcC,kBAAAA;AACrB,SAAUD,YAAV,IAAAL,SAAS,QAAe,gCAAf,CAAT,CAAA;AACA,SAAUM,UAAV,IAAAN,SAAS,QAAa,8BAAb,CAAT,CAAA;AACAd,QAAAA,KAAK,GAAG;AACNqB,UAAAA,KAAK,EAAEF,YADD;AAENG,UAAAA,SAAS,EAAEF,UAFL;AAGNV,UAAAA,IAAI,EAAE/F,SAAS,CAACwB;AAHV,SAAR;;AAOAQ,QAAAA,UAAU,CAAC2D,QAAX,CAAoBC,OAApB,CAA4BC,MAA5B,CACE,eADF,gBAEcR,KAAK,CAACqB,KAFpB;AAGA,eAAOV,MAAP;AACD,OA3BI,CAAP;AA4BD,KArCY;AAsCbY,IAAAA,aAAa,YAASC,WAAT;AAAA;AACXxB,QAAAA,KAAK,GAAG;AACNqB,UAAAA,KAAK,EAAEG,WADD;AAENd,UAAAA,IAAI,EAAE/F,SAAS,CAAC8D;AAFV,SAAR;AAKA9B,QAAAA,UAAU,CAAC2D,QAAX,CAAoBC,OAApB,CAA4BC,MAA5B,CACE,eADF,gBAEcR,KAAK,CAACqB,KAFpB;AAIA,+BAAOV,MAAP;AACD,OAXY;AAAA;AAAA;AAAA,KAtCA;AAkDbc,IAAAA,KAAK,EAAEA,KAAK,CAAC1F,GAAD,CAlDC;AAmDb2F,IAAAA,QAAQ,EAAEA,QAAQ,CAAC3F,GAAD,CAnDL;AAoDb4F,IAAAA,OAAO,EAAEA,OAAO,CAAC5F,GAAD,CApDH;AAqDb6F,IAAAA,eAAe,EAAEA,eAAe,CAAC7F,GAAD,CArDnB;AAsDb8F,IAAAA,SAAS,EAAEA,SAAS,CAAC9F,GAAD,CAtDP;AAuDb+F,IAAAA,QAAQ,EAAEA,QAAQ,CAAC/F,GAAD,CAvDL;AAwDbgG,IAAAA,kBAAkB,EAAE1C,mBAAmB,CAACtD,GAAD;AAxD1B,GAAf;AA2DA,SAAO4E,MAAP;AACD;;;;"}
1
+ {"version":3,"file":"api-client.cjs.development.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName?: string;\n lastName: string;\n propertyId: string;\n email?: string;\n phone?: string;\n message: string;\n portal: string;\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n location_preference: attributes.location_preference,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ninterface ReferenceDetails {\n reference_code: string;\n estate_id: string;\n channel_id: string;\n channel_account_id: string;\n company_id: string;\n}\n\nexport interface ChannelsResolveReferencesResult {\n data: ReferenceDetails[];\n}\n\nexport default function(ctx: ClientCtx) {\n /**\n * @deprecated use channels.resolveReferences()\n */\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n /**\n * @param channel_id Channel ID, for example, `\"immoweb\"` or `\"immovlan\"` etc\n * @param reference_code Reference\n * @param company_id Company ID\n */\n async function resolveReferences(\n channel_id: string,\n reference_code: string,\n company_id?: string\n ): Promise<ChannelsResolveReferencesResult> {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n //TODO: getData here is an antipattern. Interceptor should not change a type of response\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","location_preference","createUnassignedLead","companyId","resolveReferences","channel_id","reference_code","company_id","endpoint","get","params","getPropertyIdFromReference","channel","referenceId","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
@@ -1 +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/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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"}
1
+ {"version":3,"file":"api-client.cjs.production.min.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName?: string;\n lastName: string;\n propertyId: string;\n email?: string;\n phone?: string;\n message: string;\n portal: string;\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n location_preference: attributes.location_preference,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ninterface ReferenceDetails {\n reference_code: string;\n estate_id: string;\n channel_id: string;\n channel_account_id: string;\n company_id: string;\n}\n\nexport interface ChannelsResolveReferencesResult {\n data: ReferenceDetails[];\n}\n\nexport default function(ctx: ClientCtx) {\n /**\n * @deprecated use channels.resolveReferences()\n */\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n /**\n * @param channel_id Channel ID, for example, `\"immoweb\"` or `\"immovlan\"` etc\n * @param reference_code Reference\n * @param company_id Company ID\n */\n async function resolveReferences(\n channel_id: string,\n reference_code: string,\n company_id?: string\n ): Promise<ChannelsResolveReferencesResult> {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n //TODO: getData here is an antipattern. Interceptor should not change a type of response\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","httpClient","put","propertyId","first_name","firstName","last_name","lastName","message","email","phone","source_type","external_source","portal","location_preference","createUnassignedLead","companyId","getPropertyIdFromReference","channel","referenceId","get","resolveReferences","channel_id","reference_code","company_id","params","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","_attributes$includes","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
@@ -316,7 +316,8 @@ function createClient(conf) {
316
316
  var _auth = null;
317
317
  var httpClient = axios.create({
318
318
  baseURL: envHosts[env]
319
- });
319
+ }); //TODO: getData here is an antipattern. Interceptor should not change a type of response
320
+
320
321
  httpClient.interceptors.response.use(getData, handleRequestFailure);
321
322
 
322
323
  if (version) {
@@ -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/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
+ {"version":3,"file":"api-client.esm.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/index.ts"],"sourcesContent":["import { AxiosInstance } from 'axios';\n\nexport type ClientConf = {\n clientId?: string;\n clientSecret?: string;\n env?: Env;\n version?: string;\n};\n\nexport type InitConf = {\n scopes?: string[];\n};\n\nexport enum TokenType {\n USER_TOKEN,\n API_TOKEN,\n}\n\nexport type Auth = {\n token: string;\n expiresIn?: string;\n type: TokenType;\n};\n\nexport type Maybe<T> = T | null;\n\nexport type ClientCtx = {\n checkAuth: (tokenType: TokenType) => void;\n httpClient: AxiosInstance;\n};\n\nexport enum Env {\n PRODUCTION = 'production',\n STAGING = 'staging',\n DEV = 'dev',\n}\n","export function getData(response: any) {\n return response.data;\n}\n\nexport function handleRequestFailure(exception: {\n response?: {\n status: number;\n data: any;\n };\n}) {\n if (exception.response) {\n const {\n response: { status, data },\n } = exception;\n\n const error: any = new Error(`${status}: ${JSON.stringify(data)}`);\n // remove parts of the stack trace so the error message (codeframe) shows up\n // at the code where the actual problem is.\n error.stack = (error.stack || '')\n .split('\\n')\n .filter(\n (line: string) =>\n !line.includes('at handleRequestFailure') &&\n !line.includes('at processTicksAndRejections')\n )\n .join('\\n');\n\n error.status = status;\n error.data = data;\n\n return Promise.reject(error);\n } else {\n return Promise.reject(exception);\n }\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function createLead(attributes: {\n firstName?: string;\n lastName: string;\n propertyId: string;\n email?: string;\n phone?: string;\n message: string;\n portal: string;\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n const {\n firstName,\n lastName,\n propertyId,\n email,\n phone,\n message,\n portal,\n } = attributes;\n\n return ctx.httpClient.put(`estates/${propertyId}/leads`, {\n first_name: firstName,\n last_name: lastName,\n message,\n email,\n phone,\n source_type: 'channel',\n external_source: portal,\n location_preference: attributes.location_preference,\n });\n }\n\n function createUnassignedLead(\n companyId: string,\n attributes: {\n first_name: string;\n last_name: string;\n phone: string;\n email: string;\n message: string;\n source_type: 'channel';\n external_source: string;\n preferences?: {\n types: string[];\n negotiation: 'sale' | 'let';\n condition: string;\n min_price?: number;\n max_price?: number;\n wishes: string[];\n min_rooms: number;\n locale: string;\n };\n location_preference?: {\n country: string;\n postal_codes: string[];\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`companies/${companyId}/leads`, attributes);\n }\n\n return { createLead, createUnassignedLead };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ninterface ReferenceDetails {\n reference_code: string;\n estate_id: string;\n channel_id: string;\n channel_account_id: string;\n company_id: string;\n}\n\nexport interface ChannelsResolveReferencesResult {\n data: ReferenceDetails[];\n}\n\nexport default function(ctx: ClientCtx) {\n /**\n * @deprecated use channels.resolveReferences()\n */\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n /**\n * @param channel_id Channel ID, for example, `\"immoweb\"` or `\"immovlan\"` etc\n * @param reference_code Reference\n * @param company_id Company ID\n */\n async function resolveReferences(\n channel_id: string,\n reference_code: string,\n company_id?: string\n ): Promise<ChannelsResolveReferencesResult> {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n //TODO: getData here is an antipattern. Interceptor should not change a type of response\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","location_preference","createUnassignedLead","companyId","resolveReferences","channel_id","reference_code","company_id","endpoint","get","params","getPropertyIdFromReference","channel","referenceId","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -42,7 +42,7 @@ declare function createClient(conf: ClientConf): {
42
42
  };
43
43
  channels: {
44
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>>;
45
+ resolveReferences: (channel_id: string, reference_code: string, company_id?: string | undefined) => Promise<import("./resources/channels").ChannelsResolveReferencesResult>;
46
46
  };
47
47
  estates: {
48
48
  getOne: (attributes: {
@@ -11,6 +11,6 @@ export interface ChannelsResolveReferencesResult {
11
11
  }
12
12
  export default function (ctx: ClientCtx): {
13
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>>;
14
+ resolveReferences: (channel_id: string, reference_code: string, company_id?: string | undefined) => Promise<ChannelsResolveReferencesResult>;
15
15
  };
16
16
  export {};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.26.2",
2
+ "version": "0.26.3",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",