@thxnetwork/sdk v1.3.5
THX Network JS SDK
This SDK contains API wrappers and an OIDC OAuth manager to simplify access to THX API resources.
Prerequisites
- Sign up for an account
- Create API keys (Developer -> API)
- Save your
clientId
andclientSecret
SDK Contents
1. THXWidget
Meant for loading the HTML widget in a website using JavaScript.
import { THXWidget, THXWidgetOptions } from '@thxnetwork/sdk';
const options: THXWidgetOptions = {
campaignId: '6571c9c6b7d775decb45a8f0',
containerSelector: '#your-html-container', // Optional
identity: '36d33a59-5398-463a-ac98-0f7d9b201648', // Optional
};
THXWidget.create(options);
1.1 ContainerSelector
Providing a containerSelector
is optional and will inject the application in a given HTML element. Make sure to provide CSS styles for proper dimensions within your page.
<div id="your-html-container" style="height: 750px;"></div>
No messagbox, launcher and notification elements will be injected if a container selector is specified!
1.2 Identity
Providing an identity is optional and alternatively you can set an identity at a later moment, for example after successful authentication with your app.
window.THXWidget.setIdentity('36d33a59-5398-463a-ac98-0f7d9b201648');
2. THXAPIClient
Meant for JavaScript backend applications.
import { THXAPIClient, THXAPIClientOptions } from '@thxnetwork/sdk';
const options: THXAPIClientOptions = {
campaignId: '65b0e27845c63cd18e0ab4a6',
clientId: 'msuq4Znuv3q8hLf7ATnlP',
clientSecret: 'YP_k8_LnPG58LHqzWGxg3EMBBGVwwJUmqsuQZdoMtEAD-85hJwRt2vxfev23T92h727bDwCqh3cIkx6meT0xxg',
};
const thx = new THXAPIClient(options);
2.1 Identities
Identities are used to connect THX accounts to users in your database.
const identity = await thx.identity.create();
// 36d33a59-5398-463a-ac98-0f7d9b201648
2.2 Events
Events can be used to add requirements for Daily, Invite and Custom Quests.
thx.events.create({ name: 'level_up', identity: '36d33a59-5398-463a-ac98-0f7d9b201648' });
2.3 Quests
Quests can be managed programatically. Specify content
and contentMetadata
according to the requirements in order to generate proper card previews.
Twitter Post Previews
Use this content
and contentMetadata
for these interaction
variants: QuestRequirement.TwitterLike
, QuestRequirement.TwitterRetweet
, QuestRequirement.TwitterLikeRetweet
.
const interaction = QuestRequirement.TwitterLikeRetweet;
const content = '46927555';
const contentMetadata = {
url: 'https://twitter.com/twitter/status/1603121182101970945',
username: 'johndoe',
name: 'John Doe',
text: '✨ Loyalty Networks are here✨ #fintech meets #loyalty',
minAmountFollowers: 123,
};
Twitter User Previews
Use this content
and contentMetadata
for these interaction
variants: QuestRequirement.TwitterFollow
.
const interaction = QuestRequirement.TwitterFollow;
const content = '13241234';
const contentMetadata = {
id: 46927555,
name: 'John doe',
profileImgUrl: 'https://picsum.com/avatar.jpg',
username: 'johndoe',
minAmountFollowers: 123,
};
Twitter Message Preview
Use this content
and contentMetadata
for these interaction
variants: QuestRequirement.TwitterMessage
,
const interaction = QuestRequirement.TwitterMessage;
const content = '✨ Loyalty Networks are here✨ #fintech meets #loyalty';
const contentMetadata = {
minFollowersCount: 123,
};
Create Twitter Quest
thx.campaigns.quests.create({
variant: QuestVariant.Twitter,
title: 'Farm along!',
description: 'Get these pointzz...',
amount: 123,
isPublished: true,
interaction,
content,
contentMetadata,
});
3. THXBrowserClient
Meant for JavaScript browser applications.
import { THXBrowserClient, THXBrowserClientOptions } from '@thxnetwork/sdk';
const options: THXBrowserClientOptions = {
clientId: 'chyBeltL7rmOeTwVu',
clientSecret: 'q4ilZuGA4VPtrGhXug3i5taXrvDtidrzyv-gJN3yVo8T2stL6RwYQjqRoK-iUiAGGvhbG_F3TEFFuD_56Q065Q'
redirectUri: 'https://www.yourdomain.com/auth-callback'
campaignId: '6571c9c6b7d775decb45a8f0', // Optional
};
const thx = new THXBrowserClient(options);
Alternatively you can set the campaignId
at a later moment, for example after obtaining it from a url or database. The campaign is used to scope API requests to a campaign that you own.
thx.setCampaignId('6571c9c6b7d775decb45a8f0');
3.1 Account
Get account info for the authenticated user and obtain it's current point balance in your campaign.
// Get Account
await client.account.get();
// Update Account
await client.account.patch({
username: '';
firstName: '';
lastName: '';
email: '';
profileImg: ''; // Absolute URL
});
// Get Point Balance
await client.pointBalance.list();
3.2 Quests
List and complete quests in your campaign.
// List Quests
await client.quests.list();
// Complete Quests
await client.quests.daily.complete(uuid, {
sub: '',
});
await client.quests.invite.complete(uuid, {
sub: '',
});
await client.quests.social.complete(id);
await client.quests.custom.complete(id);
await client.quests.web3.complete(id);
3.3 Rewards
List and redeem rewards in your campaign.
// List Rewards
await thx.rewards.list();
// Get Rewards
await thx.rewards.coin.get(uuid);
await thx.rewards.nft.get(uuid);
await thx.rewards.custom.get(uuid);
await thx.rewards.coupon.get(uuid);
// Redeem Rewards
await thx.rewards.coin.redemption.post(uuid);
await thx.rewards.nft.redemption.post(uuid);
await thx.rewards.custom.redemption.post(uuid);
await thx.rewards.coupon.redemption.post(uuid);
3.4 Wallet
List tokens held in your accounts wallet.
await thx.erc20.list({ chainId: 137 });
await thx.erc721.list({ chainId: 137 });
await thx.erc1155.list({ chainId: 137 });
5 days ago
2 months ago
2 months ago
3 months ago
3 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
10 months ago
9 months ago
9 months ago
9 months ago
9 months ago
7 months ago
9 months ago
9 months ago
7 months ago
7 months ago
11 months ago
11 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago