UNPKG

qonversion-sdk

Version:

⚡️ An SDK to easily access Qonversions Restful API

280 lines (235 loc) 6.72 kB
import axios from "axios"; import * as Qonversion from "./types"; class QonversionClient { private secretKey: string; private projectKey: string; private baseUrl = "https://api.qonversion.io/v3"; constructor(secretKey: string, projectKey: string) { this.secretKey = secretKey; this.projectKey = projectKey; } /** * GET /v3/users/:id * Get a users information using theit qonversion user id */ public async getUser(userId: string) { const url = `${this.baseUrl}/users/${userId}`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.get(url, config); return res.data as Qonversion.User; } catch (error) { console.log(error); throw error; } } /** * POST /v3/users/:id * Create a new user using a custom user id */ public async createUser(userId: string, environment: Qonversion.Environment) { const url = `${this.baseUrl}/users/${userId}`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.post(url, { environment }, config); return res.data as Qonversion.CreateUser; } catch (error) { throw error; } } /** * GET /v3/users/:id/properties * Retrieve a users properties using their qonversion user id */ public async getUserProperties(userId: string) { const url = `${this.baseUrl}/users/${userId}/properties`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.get(url, config); return res.data as Qonversion.UserProperty[]; } catch (error) { throw error; } } /** * POST /v3/users/:id/properties * Set a users properties using their qonversion user id */ public async setUserProperties( userId: string, properties: Qonversion.UserProperty[] ) { const url = `${this.baseUrl}/users/${userId}/properties`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.post(url, properties, config); return res.data as Qonversion.CreateUserProperty; } catch (error) { throw error; } } /** * GET /v3/identities/:id * Get a users information using their qonversion identity id */ public async getIdentity(identityId: string) { const url = `${this.baseUrl}/identities/${identityId}`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.get(url, config); return res.data as Qonversion.Identity; } catch (error) { throw error; } } /** * POST /v3/identities/:id * Create a new identity using a custom identity id */ public async createIdentity(id: string, userId: string) { const url = `${this.baseUrl}/identities/${id}`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.post(url, { user_id: userId }, config); return res.data as Qonversion.Identity; } catch (error) { throw error; } } /** * GET /v3/users/:userId/entitlements * Get a users entitlements using their qonversion user id */ public async getEntitlements(userId: string) { const url = `${this.baseUrl}/users/${userId}/entitlements`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; try { const res = await axios.get(url, config); return res.data as { data: Qonversion.Entitlement[] }; } catch (error) { throw error; } } /** * POST /v3/users/:userId/entitlements * Grant entitlements to a user using their qonversion user id */ public async grantEntitlement( userId: string, entitlementId: string, expires: number ) { const url = `${this.baseUrl}/users/${userId}/entitlements`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.secretKey}`, }, }; const data = { id: entitlementId, expires, }; try { await axios.post(url, data, config); } catch (error) { throw error; } } /** * DELETE /v3/users/:userId/entitlements/:entitlementId * Revoke entitlements from a user using their qonversion user id */ public async revokeEntitlement(userId: string, entitlementId: string) { const url = `${this.baseUrl}/users/${userId}/entitlements/${entitlementId}`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.secretKey}`, }, }; try { await axios.delete(url, config); } catch (error) { throw error; } } /** * POST /v3/users/:userId/purchases * Create a new purchase for a user using their qonversion user id */ public async createPurchase( userId: string, price: string, currency: string, stripeStoreData: { subscription_id: string; product_id: string; } ) { const url = `${this.baseUrl}/users/${userId}/purchases`; const config = { headers: { "Content-Type": "application/json", Accept: "application/json", Authorization: `Bearer ${this.projectKey}`, }, }; const data = { price, currency, stripe_store_data: stripeStoreData, }; try { await axios.post(url, data, config); } catch (error) { throw error; } } } export default QonversionClient; export * from "./types";