@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
JavaScript
;
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