UNPKG

@ref247/affiliate-sdk

Version:

Ref247.io Affiliate SDK - integrate with us from you backend or build your custom UI

578 lines (571 loc) 25.1 kB
'use strict'; var axios = require('axios'); exports.ApplicationEvent = void 0; (function (ApplicationEvent) { ApplicationEvent["CREATE_CAMPAIGN"] = "create_campaign"; ApplicationEvent["CREATE_COMMISSION_STRUCTURE"] = "create_commission_structure"; ApplicationEvent["CREATE_TRACKING"] = "create_tracking"; ApplicationEvent["MAIL_SEND"] = "mail_send"; ApplicationEvent["DELETE_AFFILIATE"] = "delete_affiliate"; ApplicationEvent["ACTIVATE_AFFILIATE"] = "activate_affiliate"; ApplicationEvent["INCREMENT_AFFILIATELINK_CLICK"] = "increment_affiliatelink_click"; })(exports.ApplicationEvent || (exports.ApplicationEvent = {})); exports.ApplicationQueue = void 0; (function (ApplicationQueue) { ApplicationQueue["AFFILIATION_QUEUE"] = "affiliation_queue"; ApplicationQueue["COMMISSION_QUEUE"] = "commission_queue"; ApplicationQueue["TRACKING_QUEUE"] = "tracking_queue"; ApplicationQueue["MAIL_QUEUE"] = "mail_queue"; })(exports.ApplicationQueue || (exports.ApplicationQueue = {})); exports.ApplicationEventService = void 0; (function (ApplicationEventService) { ApplicationEventService["AFFILIATION_SERVICE"] = "affiliation_service"; ApplicationEventService["COMMISSION_SERVICE"] = "commission_service"; ApplicationEventService["TRACKING_SERVICE"] = "tracking_service"; ApplicationEventService["MAIL_SERVICE"] = "mail_service"; })(exports.ApplicationEventService || (exports.ApplicationEventService = {})); exports.OrganizationPlanEnum = void 0; (function (OrganizationPlanEnum) { OrganizationPlanEnum["Free"] = "Free"; OrganizationPlanEnum["Starter"] = "Starter"; OrganizationPlanEnum["Growth"] = "Growth"; OrganizationPlanEnum["Enterprise"] = "Enterprise"; })(exports.OrganizationPlanEnum || (exports.OrganizationPlanEnum = {})); exports.CommissionStatusEnum = void 0; (function (CommissionStatusEnum) { CommissionStatusEnum["PENDING"] = "pending"; CommissionStatusEnum["PAID"] = "paid"; CommissionStatusEnum["REJECTED"] = "rejected"; })(exports.CommissionStatusEnum || (exports.CommissionStatusEnum = {})); exports.ConditionOperatorEnum = void 0; (function (ConditionOperatorEnum) { ConditionOperatorEnum["GREATER_THAN"] = ">"; ConditionOperatorEnum["GREATER_THAN_OR_EQUAL"] = ">="; ConditionOperatorEnum["LESS_THAN"] = "<"; ConditionOperatorEnum["LESS_THAN_OR_EQUAL"] = "<="; ConditionOperatorEnum["EQUALS"] = "="; ConditionOperatorEnum["NOT_EQUALS"] = "!="; ConditionOperatorEnum["NONE"] = "NONE"; })(exports.ConditionOperatorEnum || (exports.ConditionOperatorEnum = {})); exports.OrderEnum = void 0; (function (OrderEnum) { OrderEnum["ASC"] = "ASC"; OrderEnum["DESC"] = "DESC"; })(exports.OrderEnum || (exports.OrderEnum = {})); exports.FileTypeEnum = void 0; (function (FileTypeEnum) { FileTypeEnum["PROFILE_PICTURE"] = "PROFILE_PICTURE"; FileTypeEnum["ORGANIZATION_LOGO"] = "ORGANIZATION_LOGO"; FileTypeEnum["ORGANIZATION_AFFILIATE_FILES"] = "ORGANIZATION_AFFILIATE_FILES"; })(exports.FileTypeEnum || (exports.FileTypeEnum = {})); exports.OrgCurrencyEnum = void 0; (function (OrgCurrencyEnum) { OrgCurrencyEnum["USD"] = "USD"; OrgCurrencyEnum["EUR"] = "EUR"; })(exports.OrgCurrencyEnum || (exports.OrgCurrencyEnum = {})); exports.OrgEventTypeEnum = void 0; (function (OrgEventTypeEnum) { OrgEventTypeEnum["click"] = "click"; OrgEventTypeEnum["deposit"] = "deposit"; })(exports.OrgEventTypeEnum || (exports.OrgEventTypeEnum = {})); exports.PaymentStatusEnum = void 0; (function (PaymentStatusEnum) { PaymentStatusEnum["PENDING"] = "pending"; PaymentStatusEnum["COMPLETED"] = "completed"; PaymentStatusEnum["FAILED"] = "failed"; PaymentStatusEnum["REFUNDED"] = "refunded"; })(exports.PaymentStatusEnum || (exports.PaymentStatusEnum = {})); exports.RoleEnum = void 0; (function (RoleEnum) { RoleEnum["Admin"] = "admin"; RoleEnum["Manager"] = "manager"; RoleEnum["Viewer"] = "viewer"; RoleEnum["Affiliate"] = "affiliate"; })(exports.RoleEnum || (exports.RoleEnum = {})); /** * Converts a role to a role enum. */ const roleToRoleEnum = (role) => { switch (role.name) { case exports.RoleEnum.Admin: return exports.RoleEnum.Admin; case exports.RoleEnum.Manager: return exports.RoleEnum.Manager; case exports.RoleEnum.Viewer: return exports.RoleEnum.Viewer; case exports.RoleEnum.Affiliate: return exports.RoleEnum.Affiliate; default: throw new Error(`Invalid role name: ${role.name}`); } }; class Ref247AffiliateSDK { apiUrl; apiKey; api; constructor(apiUrl, apiKey) { this.apiUrl = apiUrl || 'http://localhost:3100'; this.apiKey = apiKey; this.api = axios.create({ baseURL: this.apiUrl, headers: { 'Content-Type': 'application/json' }, }); // Set up request interceptor to include the API key if provided this.api.interceptors.request.use((config) => { if (this.apiKey) { config.headers['X-API-KEY'] = this.apiKey; } return config; }); } static async init(apiUrl, apiKey) { return new Ref247AffiliateSDK(apiUrl, apiKey); } getApiInstance() { return this.api; } async setBearer(token) { this.api.interceptors.request.use((config) => { if (token) config.headers.Authorization = `Bearer ${token}`; return config; }); } // Auth methods async login(email, password) { const { data } = await this.api.post('/auth/login', { email, password }); return data; } async resetPasswordRequest(email) { const { data } = await this.api.post('/auth/reset-password', { email }); return data; } async updatePassword(token, password) { const { data } = await this.api.post('/auth/change-password', { token, password }); return data; } async validateMagicToken(token) { const { data } = await this.api.get(`/auth/magic-link?token=${token}`); return data; } async loginByMagicLink(email) { const { data } = await this.api.post('/auth/login/magic-link', { email }); return data; } async register(firstName, lastName, email, password) { const { data } = await this.api.post('/auth/register', { firstName, lastName, email, password }); return data; } async getRoles() { const { data } = await this.api.get(`/role`); return data; } ; // User methods async getMe() { const { data } = await this.api.get('/user/me'); return data; } async updateUser(userId, updateData) { const { data } = await this.api.patch(`/user/${userId}`, updateData); return data; } // Organization methods async addUserToOrganization(organizationId, email, roleId) { const { data } = await this.api.post(`/organizations/${organizationId}/users`, { email, roleId }); return data; } ; async updateUserRole(organizationId, userId, roleId) { const { data } = await this.api.patch(`/organizations/${organizationId}/users/${userId}/role`, { roleId }); return data; } ; async enterpriseRequest(orgId) { await this.api.put(`/organizations/${orgId}/enterpriseRequest`); } ; async deleteUserFromOrganization(organizationId, userId) { const { data } = await this.api.delete(`/organizations/${organizationId}/users/${userId}`); return data; } ; async getUsersFromOrganization(organizationId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', withDeleted = false) { const { data } = await this.api.get(`/organizations/${organizationId}/users?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}&withDeleted=${withDeleted}`); return data; } ; async getOrganizations() { const { data } = await this.api.get('/organizations'); return data; } async createOrganization(name, userId) { const { data } = await this.api.post('/organizations', { name, userId }); return data; } async updateOrganization(organizationId, updateData) { const { data } = await this.api.patch(`/organizations/${organizationId}`, updateData); return data; } async getOrganizationTheme(organizationId) { const { data } = await this.api.get(`/organizations/${organizationId}/theme`); return data; } async getOrganizationCurrency(organizationId) { const { data } = await this.api.get(`/organizations/${organizationId}/currency`); return data; } async addOrganizationCurrency(organizationId, name) { const { data } = await this.api.post(`/organizations/${organizationId}/currency`, { name }); return data; } async updateOrganizationCurrency(organizationId, id, name) { const { data } = await this.api.patch(`/organizations/${organizationId}/currency/${id}`, { name }); return data; } async removeOrganizationCurrency(organizationId, id) { const { data } = await this.api.delete(`/organizations/${organizationId}/currency/${id}`); return data; } async getOrganizationPlan(orgId) { const { data } = await this.api.get(`/organizations/${orgId}/plan`); return data; } async getPricingPlans() { const { data } = await this.api.get(`/plan`); return data; } async getPricingPlan(planId) { const { data } = await this.api.get(`/plan/${planId}`); return data; } async getOrganizationEventTypes(organizationId) { const { data } = await this.api.get(`/organizations/${organizationId}/eventTypes`); return data; } async addOrganizationEventType(organizationId, name) { const { data } = await this.api.post(`/organizations/${organizationId}/eventTypes`, { name }); return data; } async updateOrganizationEventType(organizationId, id, name) { const { data } = await this.api.patch(`/organizations/${organizationId}/eventTypes/${id}`, { name }); return data; } async removeOrganizationEventType(organizationId, id) { const { data } = await this.api.delete(`/organizations/${organizationId}/eventTypes/${id}`); return data; } // Affiliate methods async getAffiliates(organizationId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', withDeleted = false) { const { data } = await this.api.get(`/affiliate/${organizationId}/organization?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}&withDeleted=${withDeleted}`); return data; } async createAffiliate(affiliateData) { const { data } = await this.api.post('/affiliate', affiliateData); return data; } async addCampaignToAffiliate(affiliateId, campaignId) { const { data } = await this.api.patch(`/affiliate/${affiliateId}/campaign/${campaignId}`); return data; } async removeCampaignToAffiliate(affiliateId, campaignId) { const { data } = await this.api.delete(`/affiliate/${affiliateId}/campaign/${campaignId}`); return data; } async getAffiliate(affiliationId) { const { data } = await this.api.get(`/affiliate/${affiliationId}`); return data; } async getAffiliateReferrals(affiliationId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', withDeleted = false) { const { data } = await this.api.get(`/affiliate/${affiliationId}/referrals?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}&withDeleted=${withDeleted}`); return data; } async getAffiliateCommissionsGenerated(affiliationId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC') { const { data } = await this.api.get(`/commission/${affiliationId}/generated?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}`); return data; } async getAffiliateCommissionsGained(affiliationId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC') { const { data } = await this.api.get(`/commission/${affiliationId}/gained?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}`); return data; } async getAffiliatesByAffiliateId(affiliationId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', withDeleted = false) { const { data } = await this.api.get(`/affiliate/${affiliationId}/referralsList?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}&withDeleted=${withDeleted}`); return data; } async updateAffiliate(affiliationId, updateData) { const { data } = await this.api.patch(`/affiliate/${affiliationId}`, updateData); return data; } async getAffiliateByOrgIdAndUserId(orgId) { const { data } = await this.api.get(`/affiliate/${orgId}/organization/me`); return data; } async createAffiliateLink(affiliateData) { const { data } = await this.api.post('/marketing/affiliate-link', affiliateData); return data; } ; async deleteAffiliateLink(affiliateLinkId) { const { data } = await this.api.delete(`/marketing/affiliate-link/${affiliateLinkId}`); return data; } ; async getAllAffiliateLinksOfAffiliate(affiliateId, withDeleted = false, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC') { const { data } = await this.api.get(`/marketing/affiliate-link/affiliation/${affiliateId}?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}&withDeleted=${withDeleted}`); return data; } ; async getAllAffiliateLinksOfOrganization(orgId, withDeleted = false, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC') { const { data } = await this.api.get(`/marketing/affiliate-link/organization/${orgId}?page=${page}&take=${take}&searchTerm=${search}&orderBy=${orderBy}&order=${order}&withDeleted=${withDeleted}`); return data; } ; // Campaign methods async createCampaign(campaignData) { const { data } = await this.api.post('/marketing/campaign', campaignData); return data; } async getAllCampaignsOfOrganization(orgId, withDeleted = false) { const { data } = await this.api.get(`/marketing/${orgId}/campaign?withDeleted=${withDeleted}`); return data; } async updateCampaign(id, campaignData) { const { data } = await this.api.patch(`/marketing/campaign/${id}`, campaignData); return data; } async deleteCampaign(id) { const { data } = await this.api.delete(`/marketing/campaign/${id}`); return data; } // Commission methods async getCommissionStructuresOfOrganization(orgId, withDeleted = false) { const { data } = await this.api.get(`/commission/${orgId}/structure?withDeleted=${withDeleted}`); return data; } async getCommissionStructure(commissionStructureId) { const { data } = await this.api.get(`/commission/structure/${commissionStructureId}`); return data; } async addCommissionStructureToCampaign(commissionStructureId, campaignId) { const { data } = await this.api.put(`/commission/structure/${commissionStructureId}/campaign/${campaignId}`); return data; } async removeCommissionStructureToCampaign(commissionStructureId, campaignId) { const { data } = await this.api.delete(`/commission/structure/${commissionStructureId}/campaign/${campaignId}`); return data; } async addCommissionStructure(commissionStructureData) { const { data } = await this.api.post('/commission/structure', commissionStructureData); return data; } async deleteCommissionStructure(commissionStructureId) { const { data } = await this.api.delete(`/commission/structure/${commissionStructureId}`); return data; } async updateCommissionStructure(id, updateData) { const { data } = await this.api.patch(`/commission/structure/${id}`, updateData); return data; } async getCommissionRule(commissionRuleId) { const { data } = await this.api.get(`/commission/rule/${commissionRuleId}`); return data; } async deleteCommissionRule(commissionRuleId) { const { data } = await this.api.delete(`/commission/rule/${commissionRuleId}`); return data; } async getCommissionRulesOfcommissionStructure(commissionStructureId, withDeleted = false) { const { data } = await this.api.get(`/commission/structure/${commissionStructureId}/rule?withDeleted=${withDeleted}`); return data; } async addCommissionRule(commissionRuleData) { if (commissionRuleData.fixedAmount) { commissionRuleData.fixedAmount = Number(commissionRuleData.fixedAmount); } if (commissionRuleData.percentage) { commissionRuleData.percentage = Number(commissionRuleData.percentage); } if (commissionRuleData.value) { commissionRuleData.value = Number(commissionRuleData.value); } const { data } = await this.api.post('/commission/rule', commissionRuleData); return data; } async updateCommissionRule(id, updateData) { if (updateData.fixedAmount) { updateData.fixedAmount = Number(updateData.fixedAmount); } if (updateData.percentage) { updateData.percentage = Number(updateData.percentage); } if (updateData.value) { updateData.value = Number(updateData.value); } const { data } = await this.api.patch(`/commission/rule/${id}`, updateData); return data; } async getAffiliateCommissionsChartData(affiliateId, startDate, endDate) { const params = new URLSearchParams(); if (startDate) params.append('startDate', startDate.toISOString()); if (endDate) params.append('endDate', endDate.toISOString()); const { data } = await this.api.get(`/commission/${affiliateId}/chart/commissions?${params.toString()}`); return data; } async getAffiliateReferralsChartData(affiliateId, startDate, endDate) { const params = new URLSearchParams(); if (startDate) params.append('startDate', startDate.toISOString()); if (endDate) params.append('endDate', endDate.toISOString()); const { data } = await this.api.get(`/affiliate/${affiliateId}/chart/referrals?${params.toString()}`); return data; } async getOrgReferralsChartData(orgId, startDate, endDate) { const params = new URLSearchParams(); if (startDate) params.append('startDate', startDate.toISOString()); if (endDate) params.append('endDate', endDate.toISOString()); const { data } = await this.api.get(`/affiliate/organization/${orgId}/chart/referrals?${params.toString()}`); return data; } async getAffiliateStats(affiliateId) { const { data } = await this.api.get(`/affiliate/${affiliateId}/stats`); return data; } async getOrganizationAffiliationStats(orgId) { const { data } = await this.api.get(`/affiliate/${orgId}/organization/stats`); return data; } async getOrganizationCommissionStats(orgId) { const { data } = await this.api.get(`/commission/organization/${orgId}/summary`); return data; } async getOrganizationGenericStats(orgId) { const { data } = await this.api.get(`/organizations/${orgId}/genericStats`); return data; } async getOrganizationPrivateStats(orgId) { const { data } = await this.api.get(`/organizations/${orgId}/privateStats`); return data; } async getOrgCommissionsChartData(orgId, startDate, endDate) { const params = new URLSearchParams(); if (startDate) params.append('startDate', startDate.toISOString()); if (endDate) params.append('endDate', endDate.toISOString()); const { data } = await this.api.get(`/commission/organization/${orgId}/chart/commissions?${params.toString()}`); return data; } // API Key methods async createApiKey(organizationId, data) { const { data: response } = await this.api.post(`/organizations/${organizationId}/api-keys`, data); return response; } async listApiKeysOfOrganization(organizationId) { const { data } = await this.api.get(`/organizations/${organizationId}/api-keys`); return data; } async listApiKeysOfUserAndOrganizationId(userId, organizationId) { const { data } = await this.api.get(`/organizations/${organizationId}/api-keys/users/${userId}`); return data; } async revokeApiKey(organizationId, apiKeyId) { const { data } = await this.api.delete(`/organizations/${organizationId}/api-keys/${apiKeyId}`); return data; } // File methods async getOrganizationSignedUrl(orgId) { const { data } = await this.api.get(`/file/organization/${orgId}`); return data; } async getPublicSignedUrl(orgId) { const { data } = await this.api.get(`/file/organization/${orgId}/public`); return data; } async getUploadUrlOrganization(uploadRequest) { const { data } = await this.api.post('/file/upload/organization', uploadRequest); return data; } async getUploadUrlUser(uploadRequest) { const { data } = await this.api.post('/file/upload/user', uploadRequest); return data; } // Payment methods async getStripeConfig() { const { data } = await this.api.get('/payments'); return data; } async createBillingSession(checkoutData) { const { data } = await this.api.post('/payments/session', checkoutData); return data; } async changeSubscription(checkoutData) { const { data } = await this.api.post('/payments/change-subscription', checkoutData); return data; } async getPaymentsByOrganization(orgId) { const { data } = await this.api.get(`/payments/organization/${orgId}`); return data; } async getPaymentsPendingByOrganization(orgId) { const { data } = await this.api.get(`/payments/organization/${orgId}/pending`); return data; } // Audit Log methods async getAuditLogsByOrganizationId(orgId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', startDate, endDate) { const params = new URLSearchParams(); params.append('page', page.toString()); params.append('take', take.toString()); if (search) params.append('searchTerm', search); params.append('orderBy', orderBy); params.append('order', order); if (startDate) params.append('startDate', startDate.toISOString()); if (endDate) params.append('endDate', endDate.toISOString()); const { data } = await this.api.get(`/audit/organization/${orgId}?${params.toString()}`); return data; } // Commission methods async getOrganizationCommissions(orgId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', status) { const params = new URLSearchParams({ page: page.toString(), take: take.toString(), searchTerm: search, orderBy, order }); if (status) { params.append('status', status); } const { data } = await this.api.get(`/commission/organization/${orgId}/commissions?${params.toString()}`); return data; } async updateCommissionsStatus(orgId, commissionIds, status) { const { data } = await this.api.patch(`/commission/organization/${orgId}/commissions/status`, { commissionIds, status }); return data; } // Referral Action methods async getOrganizationReferralActions(orgId, page = 1, take = 10, search = '', orderBy = 'createdAt', order = 'DESC', isProcessed) { const params = new URLSearchParams({ page: page.toString(), take: take.toString(), searchTerm: search, orderBy, order }); if (isProcessed) { params.append('isProcessed', `${isProcessed}`); } const { data } = await this.api.get(`/referralaction/organization/${orgId}?${params.toString()}`); return data; } } exports.Ref247AffiliateSDK = Ref247AffiliateSDK; exports.roleToRoleEnum = roleToRoleEnum; //# sourceMappingURL=ref247-affiliate-sdk.cjs.map