UNPKG

@payforpress/payforpress-node-sdk

Version:

Official Node.js Server SDK for PayForPress API - An onboarding, paywall and payment solution for online media

123 lines (101 loc) 3.25 kB
import { PayForPressConfig, UserResponse, UserUpdate, SearchParams, ArticleResponse, ArticlesResponse, ArticleFilters, AppearanceSchema, TargetingSchema, SettingsResponse, OrganizationDetails, PaymentResponse, PaymentCreateParams, PaymentSearchParams, PaymentsResponse, Article } from './types'; import { PayForPressClient } from './client'; export class PayForPress extends PayForPressClient { constructor(config: PayForPressConfig) { super(config); } // User Management async getUser(params: { email?: string; id?: string }): Promise<UserResponse> { return this.post('/users/get', params); } async createUser(user: UserUpdate): Promise<UserResponse> { return this.post('/users/create', user); } async updateUser(id: string, user: UserUpdate): Promise<UserResponse> { return this.post('/users/update', { id, newProps: user }); } async deleteUser(id: string): Promise<{ success: boolean; message: string }> { return this.post('/users/delete', { id }); } async searchUsers( params: SearchParams ): Promise<{ success: boolean; users: any[]; total: number }> { return this.post('/users/search', params); } // Article Management async getArticle( params: { id?: string; url?: string } | ArticleFilters ): Promise<ArticleResponse | ArticlesResponse> { return this.post('/articles/get', params); } async createArticle(url: string): Promise<ArticleResponse> { return this.post('/articles/create', { url }); } async updateArticle(id: string, article: Partial<Article>): Promise<ArticleResponse> { return this.post('/articles/update', { id, ...article }); } async deleteArticle(id: string): Promise<{ success: boolean }> { return this.post('/articles/delete', { id }); } // Appearance Settings async getAppearance(): Promise<{ success: boolean; appearance: AppearanceSchema }> { return this.post('/appearance/get'); } async updateAppearance( appearance: AppearanceSchema ): Promise<{ success: boolean; appearance: AppearanceSchema }> { return this.post('/appearance/update', appearance); } // Targeting Settings async getTargeting(): Promise<{ targeting: TargetingSchema }> { return this.post('/targeting/get'); } async updateTargeting( targeting: TargetingSchema ): Promise<{ message: string; targeting: TargetingSchema }> { return this.post('/targeting/update', { targeting }); } // Organization Settings async getSettings(): Promise<SettingsResponse> { return this.post('/settings/get'); } async updateSettings(settings: OrganizationDetails): Promise<SettingsResponse> { return this.post('/settings/update', settings); } // Payment Management async createPayment(params: PaymentCreateParams): Promise<PaymentResponse> { return this.post('/payments/create', params); } async getPayment(id: string): Promise<PaymentResponse> { return this.post('/payments/get', { id }); } async searchPayments(params: PaymentSearchParams): Promise<PaymentsResponse> { return this.post('/payments/search', params); } // Analytics async getAnalytics(params: { type: 'get' | 'search'; startDate?: string; endDate?: string; }): Promise<{ success: boolean; data: any }> { return this.post('/analytics', params); } } export * from './types';