@sweepbright/api-client 0.26.1 → 0.26.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ export {};
@@ -76,6 +76,30 @@ function leads (ctx) {
76
76
  }
77
77
 
78
78
  function channels (ctx) {
79
+ /**
80
+ * @param channel_id Channel ID, for example, `"immoweb"` or `"immovlan"` etc
81
+ * @param reference_code Reference
82
+ * @param company_id Company ID
83
+ */
84
+ var resolveReferences = function resolveReferences(channel_id, reference_code, company_id) {
85
+ try {
86
+ ctx.checkAuth(TokenType.API_TOKEN);
87
+ var endpoint = "/services/channel-references";
88
+ return Promise.resolve(ctx.httpClient.get(endpoint, {
89
+ params: {
90
+ channel_id: channel_id,
91
+ reference_code: reference_code,
92
+ company_id: company_id
93
+ }
94
+ }));
95
+ } catch (e) {
96
+ return Promise.reject(e);
97
+ }
98
+ };
99
+
100
+ /**
101
+ * @deprecated use channels.resolveReferences()
102
+ */
79
103
  var getPropertyIdFromReference = function getPropertyIdFromReference(channel, referenceId) {
80
104
  try {
81
105
  ctx.checkAuth(TokenType.API_TOKEN);
@@ -87,7 +111,8 @@ function channels (ctx) {
87
111
  };
88
112
 
89
113
  return {
90
- getPropertyIdFromReference: getPropertyIdFromReference
114
+ getPropertyIdFromReference: getPropertyIdFromReference,
115
+ resolveReferences: resolveReferences
91
116
  };
92
117
  }
93
118
 
@@ -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\nexport default function(ctx: ClientCtx) {\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n return { getPropertyIdFromReference };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import 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","getPropertyIdFromReference","channel","referenceId","endpoint","get","getOne","estateId","params","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","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;;mBCrEuBnB;MACPqB,sCAAAA,2BACbC,SACAC;;AAEAvB,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMoB,QAAQ,kBAAgBF,OAAhB,4BAA8CC,WAA5D;AAEA,6BAAOvB,GAAG,CAACY,UAAJ,CAAea,GAAf,CAAmBD,QAAnB,CAAP;AACD;;;;;AAED,SAAO;AAAEH,IAAAA,0BAA0B,EAA1BA;AAAF,GAAP;AACD;;kBCDuBrB;AACtB,WAAS0B,MAAT,CAAgBxB,UAAhB;;;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AAEA,WAAOJ,GAAG,CAACY,UAAJ,CACJa,GADI,wBACqBvB,UAAU,CAACyB,QADhC,EAC4C;AAC/CC,MAAAA,MAAM,EAAE;AACNhC,QAAAA,QAAQ,0BAAEM,UAAU,CAACN,QAAb,uEAAyB;AAD3B;AADuC,KAD5C,EAMJiC,IANI,CAMC,UAAAC,GAAG;AAAA,aAAIA,GAAG,CAAC9C,IAAR;AAAA,KANJ,CAAP;AAOD;;AAED,WAAS+C,MAAT,CAAgB7B,UAAhB;;;AAMEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAea,GAAf,0BACkBvB,UAAU,CAACkB,SAD7B,eAEL;AACEQ,MAAAA,MAAM,EAAE;AACNI,QAAAA,IAAI,sBAAE9B,UAAU,CAAC8B,IAAb,+DAAqB,CADnB;AAENC,QAAAA,KAAK,uBAAE/B,UAAU,CAAC+B,KAAb,iEAAsB,EAFrB;AAGNC,QAAAA,QAAQ,EAAEhC,UAAU,CAACgC;AAHf;AADV,KAFK,CAAP;AAUD;;AAED,WAASC,QAAT,CACEC,SADF;kCAEuD;QAAnDJ,YAAAA;QAAMC,aAAAA;;AAERjC,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAea,GAAf,yBAAyCW,SAAzC,aAA4D;AACjER,MAAAA,MAAM,EAAE;AACNI,QAAAA,IAAI,EAAJA,IADM;AAENC,QAAAA,KAAK,EAALA;AAFM;AADyD,KAA5D,CAAP;AAMD;;AAED,WAASI,iBAAT,CAA2BnC,UAA3B;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAAC0D,UAAxB;AAEA,WAAOtC,GAAG,CAACY,UAAJ,CAAe2B,IAAf,eACOrC,UAAU,CAACyB,QADlB,0BAC+CzB,UAAU,CAACsC,gBAD1D,WAEL;AACEC,MAAAA,MAAM,EAAEvC,UAAU,CAACuC;AADrB,KAFK,CAAP;AAMD;;AAED,WAASC,iBAAT,CAA2BxC,UAA3B;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAAC0D,UAAxB;AAEA,WAAOtC,GAAG,CAACY,UAAJ,CAAeC,GAAf,eACOX,UAAU,CAACyB,QADlB,0BAC+CzB,UAAU,CAACsC,gBAD1D,WAEL;AACEC,MAAAA,MAAM,EAAEvC,UAAU,CAACuC;AADrB,KAFK,CAAP;AAMD;;AAED,WAASE,oBAAT,CAA8BzC,UAA9B;AAIEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAAC0D,UAAxB;AAEA,WAAOtC,GAAG,CAACY,UAAJ,yBACOV,UAAU,CAACyB,QADlB,0BAC+CzB,UAAU,CAACsC,gBAD1D,UAAP;AAGD;;AAED,WAASI,aAAT,CACEjB,QADF,EAEEzB,UAFF;AAYEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AAEA,WAAOJ,GAAG,CAACY,UAAJ,CAAeC,GAAf,kBACUc,QADV,sBAELzB,UAFK,CAAP;AAID;;AAED,WAAS2C,0BAAT;QACElB,iBAAAA;QACAmB,YAAAA;AAKA9C,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAeC,GAAf,eAA+Bc,QAA/B,mBAAuD;AAC5DoB,MAAAA,aAAa,EAAED;AAD6C,KAAvD,CAAP;AAGD;;AAED,SAAO;AACLpB,IAAAA,MAAM,EAANA,MADK;AAELK,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;;0BChJuB7C;MAuBPgD,yBAAAA;QACbrB,iBAAAA;QACAa,yBAAAA;;;AAKA,UAAMhB,QAAQ,yBAAuBG,QAAvB,0BAAoDa,gBAApD,UAAd;6BACuBxC,GAAG,CAACY,UAAJ,CAAe2B,IAAf,CAAoBf,QAApB,kBAAjBzC;AACN,eAAOA,QAAQ,CAACC,IAAhB;;AACD;;;;;MArBcyC,eAAAA;QAAMe,yBAAAA;;;AACnBxC,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMoB,QAAQ,mCAAiCgB,gBAA/C;AAEA,6BAAOxC,GAAG,CAACY,UAAJ,CAAea,GAAf,CAAmBD,QAAnB,EAA6B;AAClCI,QAAAA,MAAM,EAAE;AACNhC,UAAAA,QAAQ,EAAE;AADJ;AAD0B,OAA7B,CAAP;AAKD;;;;;MApBcmC,kBAAAA;QAASX,iBAAAA;;;AACtBpB,MAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,UAAMoB,QAAQ,4BAA0BJ,SAA1B,sBAAd;AAEA,6BAAOpB,GAAG,CAACY,UAAJ,CAAea,GAAf,CAAmBD,QAAnB,EAA6B;AAClCI,QAAAA,MAAM,EAAE;AACNhC,UAAAA,QAAQ,EAAE;AADJ;AAD0B,OAA7B,CAAP;AAKD;;;;;AAyBD,SAAO;AAAEmC,IAAAA,MAAM,EAANA,MAAF;AAAUN,IAAAA,GAAG,EAAHA,GAAV;AAAeuB,IAAAA,aAAa,EAAbA;AAAf,GAAP;AACD;;oBCpCuBhD;AACtB,WAASyB,GAAT,CAAavB,UAAb;;;AACEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AAEA,WAAOJ,GAAG,CAACY,UAAJ,CAAea,GAAf,iBAAiCvB,UAAU,CAACkB,SAA5C,EAAyD;AAC9DQ,MAAAA,MAAM,EAAE;AACNhC,QAAAA,QAAQ,0BAAEM,UAAU,CAACN,QAAb,yDAAE,qBAAqBC,IAArB,CAA0B,GAA1B;AADJ;AADsD,KAAzD,CAAP;AAKD;;AAED,SAAO;AAAE4B,IAAAA,GAAG,EAAHA;AAAF,GAAP;AACD;;mBCZuBzB;AACtB,WAAS0B,MAAT,CAAgBxB,UAAhB;AACEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAea,GAAf,yBAAyCvB,UAAU,CAAC+C,SAApD,CAAP;AACD;;AAED,WAASlB,MAAT,CAAgB7B,UAAhB;;;AAKEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAea,GAAf,0BACkBvB,UAAU,CAACkB,SAD7B,gBAEL;AACEQ,MAAAA,MAAM,EAAE;AACNI,QAAAA,IAAI,sBAAE9B,UAAU,CAAC8B,IAAb,+DAAqB,CADnB;AAENC,QAAAA,KAAK,uBAAE/B,UAAU,CAAC+B,KAAb,iEAAsB;AAFrB;AADV,KAFK,CAAP;AASD;;AAED,SAAO;AACLP,IAAAA,MAAM,EAANA,MADK;AAELK,IAAAA,MAAM,EAANA;AAFK,GAAP;AAID;;SC3BuBmB,oBAAoBlD;AAC1C,WAAS+B,MAAT,CAAgB7B,UAAhB;AACEF,IAAAA,GAAG,CAACG,SAAJ,CAAcvB,SAAS,CAACwB,SAAxB;AACA,WAAOJ,GAAG,CAACY,UAAJ,CAAea,GAAf,yBACiBvB,UAAU,CAAC+C,SAD5B,kBAAP;AAGD;;AAED,SAAO;AACLlB,IAAAA,MAAM,EAANA;AADK,GAAP;AAGD;;;ACDD,IAAMoB,QAAQ,8BACXtE,WAAG,CAACuE,UADO,IACM,6BADN,YAEXvE,WAAG,CAACwE,OAFO,IAEG,qCAFH,YAGXxE,WAAG,CAACyE,GAHO,IAGD,iCAHC,YAAd;;AAMA,SAASC,YAAT,CAAsBC,IAAtB;MACUC,WAA0DD,KAA1DC;MAAUC,eAAgDF,KAAhDE;kBAAgDF,KAAlCG;MAAAA,6BAAM9E,WAAG,CAACuE;MAAYQ,UAAYJ,KAAZI;AACtD,MAAIC,KAAK,GAAgB,IAAzB;AAEA,MAAMjD,UAAU,GAAGkD,KAAK,CAACC,MAAN,CAAa;AAC9BC,IAAAA,OAAO,EAAEb,QAAQ,CAACQ,GAAD;AADa,GAAb,CAAnB;AAIA/C,EAAAA,UAAU,CAACqD,YAAX,CAAwBlF,QAAxB,CAAiCmF,GAAjC,CAAqCpF,OAArC,EAA8CG,oBAA9C;;AACA,MAAI2E,OAAJ,EAAa;AACXhD,IAAAA,UAAU,CAACuD,QAAX,CAAoBC,OAApB,CAA4BC,MAA5B,CACE,QADF,qCAEmCT,OAFnC;AAGD;;AAED,MAAM5D,GAAG,GAAG;AACVY,IAAAA,UAAU,EAAVA,UADU;AAEVT,IAAAA,SAFU,qBAEAmE,SAFA;AAGR,UAAI,CAACT,KAAL,EAAY;AACV,cAAM,IAAIxE,KAAJ,CAAU,6BAAV,CAAN;AACD;;AAED,UAAIwE,KAAK,CAACU,IAAN,KAAeD,SAAnB,EAA8B;AAC5B,cAAM,IAAIjF,KAAJ,CAAU,uCAAV,CAAN;AACD;AACF;AAVS,GAAZ;AAaA,MAAMmF,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,aAAO/D,UAAU,CACd2B,IADI,CAOH,oBAPG,EAOmB;AACtBqC,QAAAA,SAAS,EAAEnB,QADW;AAEtBoB,QAAAA,aAAa,EAAEnB,YAFO;AAGtBoB,QAAAA,UAAU,EAAE,oBAHU;AAItBC,QAAAA,KAAK,EAAEL,MAAM,CAAC7E,IAAP,CAAY,GAAZ;AAJe,OAPnB,EAaJgC,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,EAAE3F,SAAS,CAACwB;AAHV,SAAR;;AAOAQ,QAAAA,UAAU,CAACuD,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,EAAE3F,SAAS,CAAC0D;AAFV,SAAR;AAKA1B,QAAAA,UAAU,CAACuD,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,CAACtF,GAAD,CAlDC;AAmDbuF,IAAAA,QAAQ,EAAEA,QAAQ,CAACvF,GAAD,CAnDL;AAoDbwF,IAAAA,OAAO,EAAEA,OAAO,CAACxF,GAAD,CApDH;AAqDbyF,IAAAA,eAAe,EAAEA,eAAe,CAACzF,GAAD,CArDnB;AAsDb0F,IAAAA,SAAS,EAAEA,SAAS,CAAC1F,GAAD,CAtDP;AAuDb2F,IAAAA,QAAQ,EAAEA,QAAQ,CAAC3F,GAAD,CAvDL;AAwDb4F,IAAAA,kBAAkB,EAAE1C,mBAAmB,CAAClD,GAAD;AAxD1B,GAAf;AA2DA,SAAOwE,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 ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get<ChannelsResolveReferencesResult>(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","location_preference","createUnassignedLead","companyId","resolveReferences","channel_id","reference_code","company_id","endpoint","get","params","getPropertyIdFromReference","channel","referenceId","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n,r,c=e(require("axios")),i=e(require("tiny-invariant"));function s(e){return e.data}function a(e){if(e.response){var t=e.response,n=t.status,r=t.data,c=new Error(n+": "+JSON.stringify(r));return c.stack=(c.stack||"").split("\n").filter((function(e){return!e.includes("at handleRequestFailure")&&!e.includes("at processTicksAndRejections")})).join("\n"),c.status=n,c.data=r,Promise.reject(c)}return Promise.reject(e)}function o(e){return{createLead:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.put("estates/"+n.propertyId+"/leads",{first_name:n.firstName,last_name:n.lastName,message:n.message,email:n.email,phone:n.phone,source_type:"channel",external_source:n.portal,location_preference:n.location_preference})},createUnassignedLead:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("companies/"+n+"/leads",r)}}}function u(e){return{getPropertyIdFromReference:function(n,r){try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/channels/"+n+"/channel-references/"+r))}catch(e){return Promise.reject(e)}}}}function l(e){return{getOne:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/estates/"+n.estateId,{params:{includes:null!==(r=n.includes)&&void 0!==r?r:[]}}).then((function(e){return e.data}))},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/estates",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10,archived:n.archived}})},getUnits:function(n,r){var c=void 0===r?{}:r,i=c.page,s=c.limit;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/projects/"+n+"/units",{params:{page:i,limit:s}})},createPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.post("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},updatePublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.put("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},unpublishPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.delete("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads")},scheduleVisit:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("/properties/"+n+"/schedule-visit",r)},unstable_setPublicationUrl:function(n){var r=n.estateId,c=n.url;return e.checkAuth(t.API_TOKEN),e.httpClient.put("/estates/"+r+"/website-url",{published_url:c})}}}function h(e){return{getAll:function(n){var r=n.companyId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/companies/"+r+"/channel-accounts",{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},get:function(n){var r=n.channelAccountId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/channel-accounts/"+r,{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},getEstateHash:function(t){var n=t.estateId,r=t.channelAccountId;try{return Promise.resolve(e.httpClient.post("services/estates/"+n+"/channel-accounts/"+r+"/hash")).then((function(e){return e.data}))}catch(e){return Promise.reject(e)}}}}function p(e){return{get:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/companies/"+n.companyId,{params:{includes:null===(r=n.includes)||void 0===r?void 0:r.join(",")}})}}}function d(e){return{getOne:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId)},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/contacts",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10}})}}}function f(e){return{getAll:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId+"/preferences")}}}!function(e){e[e.USER_TOKEN=0]="USER_TOKEN",e[e.API_TOKEN=1]="API_TOKEN"}(t||(t={})),(n=exports.Env||(exports.Env={})).PRODUCTION="production",n.STAGING="staging",n.DEV="dev";var v=((r={})[exports.Env.PRODUCTION]="https://api.sweepbright.com",r[exports.Env.STAGING]="https://api.staging.sweepbright.com",r[exports.Env.DEV]="https://api.dev.sweepbright.com",r);exports.createClient=function(e){var n=e.clientId,r=e.clientSecret,m=e.env,A=void 0===m?exports.Env.PRODUCTION:m,g=e.version,I=null,E=c.create({baseURL:v[A]});E.interceptors.response.use(s,a),g&&(E.defaults.headers.common.Accept="application/vnd.sweepbright."+g+"+json");var _={httpClient:E,checkAuth:function(e){if(!I)throw new Error("client is not authenticated");if(I.type!==e)throw new Error("authenticated with invalid token type")}},P={authorize:function(e){void 0===e&&(e={});var c=e.scopes,s=void 0===c?["companies:read","properties:download","lead_info:write"]:c;return n||i(!1),r||i(!1),E.post("/auth/access-token",{client_id:n,client_secret:r,grant_type:"client_credentials",scope:s.join(",")}).then((function(e){var n=e.access_token,r=e.expires_in;return n||i(!1),r||i(!1),E.defaults.headers.common.Authorization="Bearer "+(I={token:n,expiresIn:r,type:t.API_TOKEN}).token,P}))},withUserToken:function(e){try{return E.defaults.headers.common.Authorization="Bearer "+(I={token:e,type:t.USER_TOKEN}).token,Promise.resolve(P)}catch(e){return Promise.reject(e)}},leads:o(_),channels:u(_),estates:l(_),channelAccounts:h(_),companies:p(_),contacts:d(_),contactPreferences:f(_)};return P};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t,n,r,c=e(require("axios")),i=e(require("tiny-invariant"));function s(e){return e.data}function a(e){if(e.response){var t=e.response,n=t.status,r=t.data,c=new Error(n+": "+JSON.stringify(r));return c.stack=(c.stack||"").split("\n").filter((function(e){return!e.includes("at handleRequestFailure")&&!e.includes("at processTicksAndRejections")})).join("\n"),c.status=n,c.data=r,Promise.reject(c)}return Promise.reject(e)}function o(e){return{createLead:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.put("estates/"+n.propertyId+"/leads",{first_name:n.firstName,last_name:n.lastName,message:n.message,email:n.email,phone:n.phone,source_type:"channel",external_source:n.portal,location_preference:n.location_preference})},createUnassignedLead:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("companies/"+n+"/leads",r)}}}function u(e){return{getPropertyIdFromReference:function(n,r){try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/channels/"+n+"/channel-references/"+r))}catch(e){return Promise.reject(e)}},resolveReferences:function(n,r,c){try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/channel-references",{params:{channel_id:n,reference_code:r,company_id:c}}))}catch(e){return Promise.reject(e)}}}}function l(e){return{getOne:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/estates/"+n.estateId,{params:{includes:null!==(r=n.includes)&&void 0!==r?r:[]}}).then((function(e){return e.data}))},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/estates",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10,archived:n.archived}})},getUnits:function(n,r){var c=void 0===r?{}:r,i=c.page,s=c.limit;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/projects/"+n+"/units",{params:{page:i,limit:s}})},createPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.post("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},updatePublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.put("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads",{config:n.config})},unpublishPublication:function(n){return e.checkAuth(t.USER_TOKEN),e.httpClient.delete("/estates/"+n.estateId+"/channel-accounts/"+n.channelAccountId+"/ads")},scheduleVisit:function(n,r){return e.checkAuth(t.API_TOKEN),e.httpClient.put("/properties/"+n+"/schedule-visit",r)},unstable_setPublicationUrl:function(n){var r=n.estateId,c=n.url;return e.checkAuth(t.API_TOKEN),e.httpClient.put("/estates/"+r+"/website-url",{published_url:c})}}}function h(e){return{getAll:function(n){var r=n.companyId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/companies/"+r+"/channel-accounts",{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},get:function(n){var r=n.channelAccountId;try{return e.checkAuth(t.API_TOKEN),Promise.resolve(e.httpClient.get("/services/channel-accounts/"+r,{params:{includes:"channel"}}))}catch(e){return Promise.reject(e)}},getEstateHash:function(t){var n=t.estateId,r=t.channelAccountId;try{return Promise.resolve(e.httpClient.post("services/estates/"+n+"/channel-accounts/"+r+"/hash")).then((function(e){return e.data}))}catch(e){return Promise.reject(e)}}}}function p(e){return{get:function(n){var r;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/companies/"+n.companyId,{params:{includes:null===(r=n.includes)||void 0===r?void 0:r.join(",")}})}}}function d(e){return{getOne:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId)},getAll:function(n){var r,c;return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/companies/"+n.companyId+"/contacts",{params:{page:null!==(r=n.page)&&void 0!==r?r:1,limit:null!==(c=n.limit)&&void 0!==c?c:10}})}}}function f(e){return{getAll:function(n){return e.checkAuth(t.API_TOKEN),e.httpClient.get("/services/contacts/"+n.contactId+"/preferences")}}}!function(e){e[e.USER_TOKEN=0]="USER_TOKEN",e[e.API_TOKEN=1]="API_TOKEN"}(t||(t={})),(n=exports.Env||(exports.Env={})).PRODUCTION="production",n.STAGING="staging",n.DEV="dev";var v=((r={})[exports.Env.PRODUCTION]="https://api.sweepbright.com",r[exports.Env.STAGING]="https://api.staging.sweepbright.com",r[exports.Env.DEV]="https://api.dev.sweepbright.com",r);exports.createClient=function(e){var n=e.clientId,r=e.clientSecret,m=e.env,A=void 0===m?exports.Env.PRODUCTION:m,g=e.version,I=null,_=c.create({baseURL:v[A]});_.interceptors.response.use(s,a),g&&(_.defaults.headers.common.Accept="application/vnd.sweepbright."+g+"+json");var E={httpClient:_,checkAuth:function(e){if(!I)throw new Error("client is not authenticated");if(I.type!==e)throw new Error("authenticated with invalid token type")}},P={authorize:function(e){void 0===e&&(e={});var c=e.scopes,s=void 0===c?["companies:read","properties:download","lead_info:write"]:c;return n||i(!1),r||i(!1),_.post("/auth/access-token",{client_id:n,client_secret:r,grant_type:"client_credentials",scope:s.join(",")}).then((function(e){var n=e.access_token,r=e.expires_in;return n||i(!1),r||i(!1),_.defaults.headers.common.Authorization="Bearer "+(I={token:n,expiresIn:r,type:t.API_TOKEN}).token,P}))},withUserToken:function(e){try{return _.defaults.headers.common.Authorization="Bearer "+(I={token:e,type:t.USER_TOKEN}).token,Promise.resolve(P)}catch(e){return Promise.reject(e)}},leads:o(E),channels:u(E),estates:l(E),channelAccounts:h(E),companies:p(E),contacts:d(E),contactPreferences:f(E)};return P};
2
2
  //# sourceMappingURL=api-client.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.cjs.production.min.js","sources":["../src/types.ts","../src/utils.ts","../src/resources/leads.ts","../src/resources/channels.ts","../src/resources/estates.ts","../src/resources/channel_accounts.ts","../src/resources/companies.ts","../src/resources/contacts.ts","../src/resources/contact_preferences.ts","../src/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\nexport default function(ctx: ClientCtx) {\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n return { getPropertyIdFromReference };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import 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","getOne","estateId","params","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","_attributes$includes","contactId","contact_preferences","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 ) {\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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"}
@@ -72,6 +72,30 @@ function leads (ctx) {
72
72
  }
73
73
 
74
74
  function channels (ctx) {
75
+ /**
76
+ * @param channel_id Channel ID, for example, `"immoweb"` or `"immovlan"` etc
77
+ * @param reference_code Reference
78
+ * @param company_id Company ID
79
+ */
80
+ var resolveReferences = function resolveReferences(channel_id, reference_code, company_id) {
81
+ try {
82
+ ctx.checkAuth(TokenType.API_TOKEN);
83
+ var endpoint = "/services/channel-references";
84
+ return Promise.resolve(ctx.httpClient.get(endpoint, {
85
+ params: {
86
+ channel_id: channel_id,
87
+ reference_code: reference_code,
88
+ company_id: company_id
89
+ }
90
+ }));
91
+ } catch (e) {
92
+ return Promise.reject(e);
93
+ }
94
+ };
95
+
96
+ /**
97
+ * @deprecated use channels.resolveReferences()
98
+ */
75
99
  var getPropertyIdFromReference = function getPropertyIdFromReference(channel, referenceId) {
76
100
  try {
77
101
  ctx.checkAuth(TokenType.API_TOKEN);
@@ -83,7 +107,8 @@ function channels (ctx) {
83
107
  };
84
108
 
85
109
  return {
86
- getPropertyIdFromReference: getPropertyIdFromReference
110
+ getPropertyIdFromReference: getPropertyIdFromReference,
111
+ resolveReferences: resolveReferences
87
112
  };
88
113
  }
89
114
 
@@ -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\nexport default function(ctx: ClientCtx) {\n async function getPropertyIdFromReference(\n channel: string,\n referenceId: string\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/channels/${channel}/channel-references/${referenceId}`;\n\n return ctx.httpClient.get(endpoint);\n }\n\n return { getPropertyIdFromReference };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import 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","getPropertyIdFromReference","channel","referenceId","endpoint","get","getOne","estateId","params","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","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 ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-references`;\n\n return ctx.httpClient.get<ChannelsResolveReferencesResult>(endpoint, {\n params: {\n channel_id,\n reference_code,\n company_id,\n },\n });\n }\n\n return { getPropertyIdFromReference, resolveReferences };\n}\n","import { ClientCtx, TokenType } from '../types';\n\ntype EstateInclude =\n | 'item.settings'\n | 'item.office.settings'\n | 'item.channels'\n | 'item.project.settings'\n | 'item.project.office.settings'\n | 'item.project.properties.office.settings'\n | 'item.project.properties.settings'\n | 'item.properties.settings'\n | 'item.properties.office.settings';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: {\n estateId: string;\n companyId: string;\n includes?: EstateInclude[];\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient\n .get(`/services/estates/${attributes.estateId}`, {\n params: {\n includes: attributes.includes ?? [],\n },\n })\n .then(res => res.data);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n archived?: boolean;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/estates`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n archived: attributes.archived,\n },\n }\n );\n }\n\n function getUnits(\n projectId: string,\n { page, limit }: { page?: number; limit?: number } = {}\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/projects/${projectId}/units`, {\n params: {\n page,\n limit,\n },\n });\n }\n\n function createPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.post(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function updatePublication(attributes: {\n estateId: string;\n channelAccountId: string;\n config: Record<string, any>;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.put(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`,\n {\n config: attributes.config,\n }\n );\n }\n\n function unpublishPublication(attributes: {\n estateId: string;\n channelAccountId: string;\n }) {\n ctx.checkAuth(TokenType.USER_TOKEN);\n\n return ctx.httpClient.delete(\n `/estates/${attributes.estateId}/channel-accounts/${attributes.channelAccountId}/ads`\n );\n }\n\n function scheduleVisit(\n estateId: string,\n attributes: {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n preferences?: {\n locale: string;\n };\n }\n ) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.put(\n `/properties/${estateId}/schedule-visit`,\n attributes\n );\n }\n\n function unstable_setPublicationUrl({\n estateId,\n url,\n }: {\n estateId: string;\n url: string;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.put(`/estates/${estateId}/website-url`, {\n published_url: url,\n });\n }\n\n return {\n getOne,\n getAll,\n getUnits,\n createPublication,\n updatePublication,\n unpublishPublication,\n scheduleVisit,\n unstable_setPublicationUrl,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n async function getAll({ companyId }: { companyId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/companies/${companyId}/channel-accounts`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function get({ channelAccountId }: { channelAccountId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n const endpoint = `/services/channel-accounts/${channelAccountId}`;\n\n return ctx.httpClient.get(endpoint, {\n params: {\n includes: 'channel',\n },\n });\n }\n\n async function getEstateHash({\n estateId,\n channelAccountId,\n }: {\n estateId: string;\n channelAccountId: string;\n }): Promise<{ hash: string }> {\n const endpoint = `services/estates/${estateId}/channel-accounts/${channelAccountId}/hash`;\n const response = await ctx.httpClient.post(endpoint);\n return response.data;\n }\n\n return { getAll, get, getEstateHash } as const;\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function get(attributes: { companyId: string; includes?: string[] }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n\n return ctx.httpClient.get(`/companies/${attributes.companyId}`, {\n params: {\n includes: attributes.includes?.join(','),\n },\n });\n }\n\n return { get };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function(ctx: ClientCtx) {\n function getOne(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(`/services/contacts/${attributes.contactId}`);\n }\n\n function getAll(attributes: {\n companyId: string;\n page?: number;\n limit?: number;\n }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/companies/${attributes.companyId}/contacts`,\n {\n params: {\n page: attributes.page ?? 1,\n limit: attributes.limit ?? 10,\n },\n }\n );\n }\n\n return {\n getOne,\n getAll,\n };\n}\n","import { ClientCtx, TokenType } from '../types';\n\nexport default function contact_preferences(ctx: ClientCtx) {\n function getAll(attributes: { contactId: string }) {\n ctx.checkAuth(TokenType.API_TOKEN);\n return ctx.httpClient.get(\n `/services/contacts/${attributes.contactId}/preferences`\n );\n }\n\n return {\n getAll,\n };\n}\n","import axios from 'axios';\nimport invariant from 'tiny-invariant';\nimport { Auth, ClientConf, Env, InitConf, Maybe, TokenType } from './types';\nimport { getData, handleRequestFailure } from './utils';\nimport leads from './resources/leads';\nimport channels from './resources/channels';\nimport estates from './resources/estates';\nimport channelAccounts from './resources/channel_accounts';\nimport companies from './resources/companies';\nimport contacts from './resources/contacts';\nimport contact_preferences from './resources/contact_preferences';\n\nconst envHosts: Record<Env, string> = {\n [Env.PRODUCTION]: 'https://api.sweepbright.com',\n [Env.STAGING]: 'https://api.staging.sweepbright.com',\n [Env.DEV]: 'https://api.dev.sweepbright.com',\n};\n\nfunction createClient(conf: ClientConf) {\n const { clientId, clientSecret, env = Env.PRODUCTION, version } = conf;\n let _auth: Maybe<Auth> = null;\n\n const httpClient = axios.create({\n baseURL: envHosts[env],\n });\n\n httpClient.interceptors.response.use(getData, handleRequestFailure);\n if (version) {\n httpClient.defaults.headers.common[\n 'Accept'\n ] = `application/vnd.sweepbright.${version}+json`;\n }\n\n const ctx = {\n httpClient,\n checkAuth(tokenType: TokenType) {\n if (!_auth) {\n throw new Error('client is not authenticated');\n }\n\n if (_auth.type !== tokenType) {\n throw new Error('authenticated with invalid token type');\n }\n },\n };\n\n const client = {\n authorize(config: InitConf = {}): Promise<Client> {\n const {\n scopes = ['companies:read', 'properties:download', 'lead_info:write'],\n } = config;\n\n invariant(clientId, 'missing client id');\n invariant(clientSecret, 'missing client secret');\n\n return httpClient\n .post<\n any,\n {\n access_token: string;\n expires_in: string;\n }\n >('/auth/access-token', {\n client_id: clientId,\n client_secret: clientSecret,\n grant_type: 'client_credentials',\n scope: scopes.join(','),\n })\n .then(({ access_token, expires_in }) => {\n invariant(access_token, 'access token should be defined');\n invariant(expires_in, 'expires_in should be defined');\n _auth = {\n token: access_token,\n expiresIn: expires_in,\n type: TokenType.API_TOKEN,\n };\n\n // https://github.com/axios/axios#custom-instance-defaults\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n return client;\n });\n },\n withUserToken: async (accessToken: string) => {\n _auth = {\n token: accessToken,\n type: TokenType.USER_TOKEN,\n };\n\n httpClient.defaults.headers.common[\n 'Authorization'\n ] = `Bearer ${_auth.token}`;\n\n return client;\n },\n leads: leads(ctx),\n channels: channels(ctx),\n estates: estates(ctx),\n channelAccounts: channelAccounts(ctx),\n companies: companies(ctx),\n contacts: contacts(ctx),\n contactPreferences: contact_preferences(ctx),\n };\n\n return client;\n}\n\ninterface Client extends ReturnType<typeof createClient> {}\n\nexport { createClient, Env, Client };\n"],"names":["TokenType","Env","getData","response","data","handleRequestFailure","exception","status","error","Error","JSON","stringify","stack","split","filter","line","includes","join","Promise","reject","ctx","createLead","attributes","checkAuth","API_TOKEN","firstName","lastName","propertyId","email","phone","message","portal","httpClient","put","first_name","last_name","source_type","external_source","location_preference","createUnassignedLead","companyId","resolveReferences","channel_id","reference_code","company_id","endpoint","get","params","getPropertyIdFromReference","channel","referenceId","getOne","estateId","then","res","getAll","page","limit","archived","getUnits","projectId","createPublication","USER_TOKEN","post","channelAccountId","config","updatePublication","unpublishPublication","scheduleVisit","unstable_setPublicationUrl","url","published_url","getEstateHash","contactId","contact_preferences","envHosts","PRODUCTION","STAGING","DEV","createClient","conf","clientId","clientSecret","env","version","_auth","axios","create","baseURL","interceptors","use","defaults","headers","common","tokenType","type","client","authorize","scopes","invariant","client_id","client_secret","grant_type","scope","access_token","expires_in","token","expiresIn","withUserToken","accessToken","leads","channels","estates","channelAccounts","companies","contacts","contactPreferences"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -42,6 +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
46
  };
46
47
  estates: {
47
48
  getOne: (attributes: {
@@ -1,4 +1,16 @@
1
1
  import { ClientCtx } from '../types';
2
+ interface ReferenceDetails {
3
+ reference_code: string;
4
+ estate_id: string;
5
+ channel_id: string;
6
+ channel_account_id: string;
7
+ company_id: string;
8
+ }
9
+ export interface ChannelsResolveReferencesResult {
10
+ data: ReferenceDetails[];
11
+ }
2
12
  export default function (ctx: ClientCtx): {
3
13
  getPropertyIdFromReference: (channel: string, referenceId: string) => Promise<import("axios").AxiosResponse<any>>;
14
+ resolveReferences: (channel_id: string, reference_code: string, company_id?: string | undefined) => Promise<import("axios").AxiosResponse<ChannelsResolveReferencesResult>>;
4
15
  };
16
+ export {};
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.26.1",
2
+ "version": "0.26.2",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",