This SDK contains API wrappers and an OIDC OAuth manager to simplify access to THX API resources.
- Sign up for an account
- Create API keys (Developer -> API)
- Save your
clientId
andclientSecret
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);
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!
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');
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);
Identities are used to connect THX accounts to users in your database.
const identity = await thx.identity.create();
// 36d33a59-5398-463a-ac98-0f7d9b201648
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' });
Quests can be managed programatically. Specify content
and contentMetadata
according to the requirements in order to generate proper card 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,
};
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,
};
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,
};
thx.campaigns.quests.create({
variant: QuestVariant.Twitter,
title: 'Farm along!',
description: 'Get these pointzz...',
amount: 123,
isPublished: true,
interaction,
content,
contentMetadata,
});
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');
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();
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);
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);
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 });