UNPKG

gohl

Version:

Go Highlevel Node Js ease of use library implementation to their API

256 lines 14.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.OAuth = void 0; const axios_1 = require("axios"); class OAuth { /** * Creates an OAuth instance with the given credientials for GHL. * @param credientials - The credientials for the OAuth flow. */ constructor(credientials) { this.credientials = credientials; } /** * Returns the OAuth URL for the given credientials. * Documentation - https://highlevel.stoplight.io/docs/integrations/a04191c0fabf9-authorization * You can set up an app in Gohighlevel Marketplace - https://marketplace.gohighlevel.com/ * @returns The OAuth URL, encoded as a URI component. */ getOAuthURL() { var _a; // https://highlevel.stoplight.io/docs/integrations/a04191c0fabf9-authorization const client_id = this.credientials.clientId; const redirect_uri = (((_a = this.credientials) === null || _a === void 0 ? void 0 : _a.redirectUri) || ""); const scope = encodeURIComponent((this.credientials.scopes || []).join(' ')); const url = `https://marketplace.${this.credientials.isWhiteLabel ? `leadconnectorhq` : `gohighlevel`}.com/oauth/chooselocation?client_id=${client_id}&response_type=code&scope=${scope}&redirect_uri=${redirect_uri}`; return url; } /** * Retrieves the authentication tokens based on the provided information. * If neither a refresh token nor a code is provided, an error is thrown. * * @param info - The CallbackInfo containing the code or refresh token. * @returns The authentication tokens including the access token, refresh token, expires in time, scope, location ID, and user type. */ getCallbackAuthTokens(info) { return __awaiter(this, void 0, void 0, function* () { var _a, _b, _c, _d, _e, _f; if (!info.code && !info.refresh_token) throw new Error("Please enter a refresh token or code"); const body = new URLSearchParams(); if (info.code) { body.set('client_id', ((_a = this.credientials) === null || _a === void 0 ? void 0 : _a.clientId) || ""); body.set('client_secret', ((_b = this.credientials) === null || _b === void 0 ? void 0 : _b.clientSecret) || ""); body.set('grant_type', 'authorization_code'); body.set('code', info.code); body.set('user_type', ((_c = this.credientials) === null || _c === void 0 ? void 0 : _c.userType) || "Location"); } else { body.set('client_id', ((_d = this.credientials) === null || _d === void 0 ? void 0 : _d.clientId) || ""); body.set('client_secret', ((_e = this.credientials) === null || _e === void 0 ? void 0 : _e.clientSecret) || ""); body.set('grant_type', 'refresh_token'); body.set('refresh_token', info.refresh_token || ""); body.set('user_type', ((_f = this.credientials) === null || _f === void 0 ? void 0 : _f.userType) || "Location"); } const headers = { 'Content-Type': 'application/x-www-form-urlencoded', "Accept": 'application/json', }; const options = { method: 'POST', url: 'https://services.leadconnectorhq.com/oauth/token', headers: headers, data: body, }; const response = yield axios_1.default.request(options); const { access_token, expires_in, scope, locationId, userType, companyId, refresh_token } = response.data; // Structure Data const data = { access_token: access_token, refresh_token: info.refresh_token ? info.refresh_token : refresh_token, expires_in: parseInt(expires_in), scope: scope, locationId: locationId, companyId: companyId, userType: userType }; return data; }); } /*** * ADD SCOPES */ addScope(scope) { const set = new Set(); for (const s of (this.credientials.scopes || [])) set.add(s); set.add(scope); this.credientials.scopes = Array.from(set.values()); return this; } /** * Add all scopes */ scopeAll() { this.credientials.scopes = [ 'companies.readonly', 'conversations.readonly', 'links.write', 'links.readonly', 'calendars.write', 'calendars.readonly', 'calendars/events.readonly', 'calendars/events.write', 'calendars/groups.readonly', 'calendars/groups.write', 'calendars/resources.readonly', 'calendars/resources.write', 'locations.write', 'locations/customFields.readonly', 'locations/customValues.write', 'locations/customFields.write', 'locations/customValues.readonly', 'locations/tags.write', 'locations/tags.readonly', 'locations.readonly', 'opportunities.readonly', 'opportunities.write', 'businesses.readonly', 'businesses.write', 'contacts.readonly', 'contacts.write', 'locations/tasks.readonly', 'locations/tasks.write' ]; } // Blogs scopeBlogsPostReadonly() { return this.addScope("blogs/post.write"); } scopeBlogsPostUpdateWrite() { return this.addScope('blogs/post-update.write'); } scopeBlogsCheckSlugReadonly() { return this.addScope("blogs/check-slug.readonly"); } scopeBlogsCategoryReadonly() { return this.addScope('blogs/category.readonly'); } scopeBlogsAuthReadonly() { return this.addScope("blogs/author.readonly"); } // Businesses scopeBusinessesReadonly() { return this.addScope("businesses.readonly"); } scopeBusinessesWrite() { return this.addScope('businesses.write'); } // Companies scopeCompaniesReadonly() { return this.addScope('companies.readonly'); } // Calendars scopeCalendarsReadonly() { return this.addScope("calendars.readonly"); } scopeCalendarsWrite() { return this.addScope("calendars.write"); } scopeCalendarsEventsReadonly() { return this.addScope("calendars/events.readonly"); } scopeCalendarsEventsWrite() { return this.addScope('calendars/events.write'); } scopeCalendarsGroupsReadonly() { return this.addScope("calendars/groups.readonly"); } scopeCalendarsGroupsWrite() { return this.addScope('calendars/groups.write'); } scopeCalendarsResourcesReadonly() { return this.addScope("calendars/resources.readonly"); } scopeCalendarsResourcesWrite() { return this.addScope('calendars/resources.write'); } // Campaigns scopeCampaignsReadonly() { return this.addScope('campaigns.readonly'); } // Contacts scopeContactsReadonly() { return this.addScope("contacts.readonly"); } scopeContactsWrite() { return this.addScope("contacts.write"); } // Conversations scopeConversationsReadonly() { return this.addScope("conversations.readonly"); } scopeConversationsWrite() { return this.addScope("conversations.write"); } scopeConversationsMessagesReadonly() { return this.addScope("conversations/message.readonly"); } scopeConversationsMessagesWrite() { return this.addScope("conversations/message.write"); } scopeConversationsReports() { return this.addScope("conversations/reports.write"); } // Courses scopeCoursesReadonly() { return this.addScope("courses.readonly"); } scopeCoursesWrite() { return this.addScope("courses.write"); } // Forms scopeFormsReadonly() { return this.addScope("forms.readonly"); } scopeFormsWrite() { return this.addScope("forms.write"); } // Funnnels scopeFunnnelsRedirectReadonly() { return this.addScope("funnels/redirect.readonly"); } scopeFunnnelsRedirectWrite() { return this.addScope("funnels/redirect.write"); } scopeFunnnelsPageWrite() { return this.addScope("funnels/page.readonly"); } scopeFunnnelsPageCountReadonly() { return this.addScope("funnels/pagecount.readonly"); } scopeFunnnelsFunnelReadonly() { return this.addScope("funnels/funnel.readonly"); } // Invoices scopeInvoicesReadonly() { return this.addScope("invoices.readonly"); } scopeInvoicesWrite() { return this.addScope("invoices.write"); } scopeInvoicesScheduleReadonly() { return this.addScope("invoices/schedule.readonly"); } scopeInvoicesScheduleWrite() { return this.addScope("invoices/schedule.write"); } scopeInvoicesTemplateReadonly() { return this.addScope("invoices/template.readonly"); } scopeInvoicesTemplateWrite() { return this.addScope("invoices/template.write"); } // Links scopeLinksReadonly() { return this.addScope("links.readonly"); } scopeLinksWrite() { return this.addScope("links.write"); } // Locations scopeLocationsReadonly() { return this.addScope("locations.readonly"); } scopeLocationsWrite() { return this.addScope("locations.write"); } scopeLocationsCustomValuesReadonly() { return this.addScope("locations/customValues.readonly"); } scopeLocationsCustomValuesWrite() { return this.addScope("locations/customValues.write"); } scopeLocationsCustomFieldsReadonly() { return this.addScope("locations/customFields.readonly"); } scopeLocationsCustomFieldsWrite() { return this.addScope("locations/customFields.write"); } scopeLocationsTasksReadonly() { return this.addScope("locations/tasks.readonly"); } scopeLocationsTasksWrite() { return this.addScope("locations/tasks.write"); } scopeLocationsTagsReadonly() { return this.addScope("locations/tags.readonly"); } scopeLocationsTagsWrite() { return this.addScope("locations/tags.write"); } scopeLocationsTemplatesReadonly() { return this.addScope("locations/templates.readonly"); } // LC-Email scopeLCEmail() { return this.addScope("lc-email.readonly"); } // Medias scopeMediasReadonly() { return this.addScope("medias.readonly"); } scopeMediasWrite() { return this.addScope("medias.write"); } // Payments scopePaymentsOrdersReadonly() { return this.addScope("payments/orders.readonly"); } scopePaymentsOrdersWrite() { return this.addScope("payments/orders.write"); } scopePaymentsIntegrationReadonly() { return this.addScope("payments/integration.readonly"); } scopePaymentsIntegrationWrite() { return this.addScope("payments/integration.write"); } scopePaymentsTransactionsReadonly() { return this.addScope("payments/transactions.readonly"); } scopePaymentsSubscriptionsReadonly() { return this.addScope("payments/subscriptions.readonly"); } scopePaymentsCustomProviderReadonly() { return this.addScope("payments/custom-provider.readonly"); } scopePaymentsCustomProviderWrite() { return this.addScope("payments/custom-provider.write"); } // Products scopeProductsReadonly() { return this.addScope("products.readonly"); } scopeProductsWrite() { return this.addScope("products.write"); } scopeProductsPricesReadonly() { return this.addScope("products/prices.readonly"); } scopeProductsPricesWrite() { return this.addScope("products/prices.write"); } scopeProductsCollectionReadonly() { return this.addScope("products/collection.readonly"); } scopeProductsCollectionWrite() { return this.addScope("products/collection.write"); } // Oauth scopeOauthReadonly() { return this.addScope("oauth.readonly"); } scopeOauthWrite() { return this.addScope("oauth.write"); } // Objects scopeObjectsSchemaReadonly() { return this.addScope("objects/schema.readonly"); } scopeObjectsSchemaWrite() { return this.addScope("objects/schema.write"); } scopeObjectsRecordReadonly() { return this.addScope("objects/record.readonly"); } scopeObjectsRecordWrite() { return this.addScope("objects/record.write"); } // Opportunities scopeOpportunitiesReadonly() { return this.addScope("opportunities.readonly"); } scopeOpportunitiesWrite() { return this.addScope("opportunities.write"); } // Saas scopeSaasCompanyReadonly() { return this.addScope("saas/company.readonly"); } scopeSaasCompanyWrite() { return this.addScope("saas/company.write"); } scopeSaasLocationReadonly() { return this.addScope("saas/location.readonly"); } scopeSaasLocationWrite() { return this.addScope("saas/location.write"); } // Snapshots scopeSnapshotsReadonly() { return this.addScope("snapshots.readonly"); } scopeSnapshotsWrite() { return this.addScope("snapshots.write"); } // Store scopeStoreShippingReadonly() { return this.addScope("store/shipping.readonly"); } scopeStoreShippingWrite() { return this.addScope("store/shipping.write"); } scopeStoreSettingReadonly() { return this.addScope("store/setting.readonly"); } scopeStoreSettingWrite() { return this.addScope("store/setting.write"); } // Surveys scopeSurveysReadonly() { return this.addScope("surveys.readonly"); } // Users scopeUsersReadonly() { return this.addScope("users.readonly"); } scopeUsersWrite() { return this.addScope("users.write"); } // Wordpress Site scopeWordPressSiteReadonly() { return this.addScope("wordpress.site.readonly"); } // Workflows scopeWorkflowsReadonly() { return this.addScope("workflows.readonly"); } } exports.OAuth = OAuth; //# sourceMappingURL=oauth.js.map