Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@pushprotocol/restapi

Package Overview
Dependencies
Maintainers
1
Versions
251
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@pushprotocol/restapi

This package gives access to Push Protocol (Push Nodes) APIs. Visit [Developer Docs](https://docs.push.org/developers) or [Push.org](https://push.org) to learn more.

  • 0.6.1
  • npm
  • Socket score

Version published
Weekly downloads
2.4K
increased by22.05%
Maintainers
1
Weekly downloads
 
Created
Source

restapi

This package gives access to Push Protocol (Push Nodes) APIs. Visit Developer Docs or Push.org to learn more.

Index

How to use in your app?

Installation

  yarn add @pushprotocol/restapi ethers

or

  npm install @pushprotocol/restapi ethers 

Import in your file

import * as PushAPI from "@pushprotocol/restapi";

About blockchain agnostic address format

In any of the below methods (unless explicitly stated otherwise) we accept either -

Note - For chat related restapis, the address is in the format: eip155:<address> instead of eip155:<chainId>:<address>

  • ETH address format: only for backwards compatibility. (Example: 0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb)

About generating the "signer" object for different platforms

When using in SERVER-SIDE code:

const ethers = require('ethers');
const PK = 'your_channel_address_secret_key';
const Pkey = `0x${PK}`;
const signer = new ethers.Wallet(Pkey);

When using in FRONT-END code:

// any other web3 ui lib is also acceptable
import { useWeb3React } from "@web3-react/core";
.
.
.
const { account, library, chainId } = useWeb3React();
const signer = library.getSigner(account);

SDK Features

For Notification

Fetching user notifications

const notifications = await PushAPI.user.getFeeds({
  user: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // user address in CAIP
  env: 'staging'
});

Fetching user spam notifications

const spams = await PushAPI.user.getFeeds({
  user: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // user address in CAIP
  spam: true,
  env: 'staging'
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
user*string-user account address (CAIP)
pagenumber1page index of the results
limitnumber10number of items in 1 page
spambooleanfalseif "true" it will fetch spam feeds
envstring'prod'API env - 'prod', 'staging', 'dev'
rawbooleanfalseif "true" the method will return unformatted raw API response

Fetching user subscriptions

const subscriptions = await PushAPI.user.getSubscriptions({
  user: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // user address in CAIP
  env: 'staging'
});

where subscriptions is a list of channels [{ channel: '0xaddress', ... }] subscribed by the user.

Note: We can find out if a user is subscribed to a channel by checking if the channel address is present in the subscriptions list

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
user*string-user address (CAIP)
envstring'prod'API env - 'prod', 'staging', 'dev'

Fetching channel details

const channelData = await PushAPI.channels.getChannel({
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // channel address in CAIP
  env: 'staging'
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
channel*string-channel address (CAIP)
envstring'prod'API env - 'prod', 'staging', 'dev'

Searching for channel(s)

const channelsData = await PushAPI.channels.search({
  query: 'push', // a search query
  page: 1, // page index
  limit: 20, // no of items per page
  env: 'staging'
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
query*string-search query
pagenumber1page index of the results
limitnumber10number of items in 1 page
envstring'prod'API env - 'prod', 'staging', 'dev'

Opt in to a channel

await PushAPI.channels.subscribe({
  signer: _signer,
  channelAddress: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // channel address in CAIP
  userAddress: 'eip155:5:0x52f856A160733A860ae7DC98DC71061bE33A28b3', // user address in CAIP
  onSuccess: () => {
   console.log('opt in success');
  },
  onError: () => {
    console.error('opt in error');
  },
  env: 'staging'
})

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
signer*--Signer object
channelAddress*string-channel address (CAIP)
userAddress*string-user address (CAIP)
verifyingContractAddressstring-Push communicator contract address
onSuccessfunction-on success callback
onErrorfunction-on error callback
envstring'prod'API env - 'prod', 'staging', 'dev'

Opt out to a channel

await PushAPI.channels.unsubscribe({
  signer: _signer,
  channelAddress: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // channel address in CAIP
  userAddress: 'eip155:5:0x52f856A160733A860ae7DC98DC71061bE33A28b3', // user address in CAIP
  onSuccess: () => {
   console.log('opt out success');
  },
  onError: () => {
    console.error('opt out error');
  },
  env: 'staging'
})

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
signer*--Signer object
channelAddress*string-channel address (CAIP)
userAddress*string-user address (CAIP)
verifyingContractAddressstring-Push communicator contract address
onSuccessfunction-on success callback
onErrorfunction-on error callback
envstring'prod'API env - 'prod', 'staging', 'dev'

*Push communicator contract address

ETH Mainnet - 0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa
ETH Goerli - 0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa

Sending notification

Direct payload for single recipient(target)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 3, // target
  identityType: 2, // direct payload
  notification: {
    title: `[SDK-TEST] notification TITLE:`,
    body: `[sdk-test] notification BODY`
  },
  payload: {
    title: `[sdk-test] payload title`,
    body: `sample msg body`,
    cta: '',
    img: ''
  },
  recipients: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // recipient address
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Direct payload for group of recipients(subset)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 4, // subset
  identityType: 2, // direct payload
  notification: {
    title: `[SDK-TEST] notification TITLE:`,
    body: `[sdk-test] notification BODY`
  },
  payload: {
    title: `[sdk-test] payload title`,
    body: `sample msg body`,
    cta: '',
    img: ''
  },
  recipients: ['eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', 'eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1'], // recipients addresses
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Direct payload for all recipients(broadcast)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 1, // broadcast
  identityType: 2, // direct payload
  notification: {
    title: `[SDK-TEST] notification TITLE:`,
    body: `[sdk-test] notification BODY`
  },
  payload: {
    title: `[sdk-test] payload title`,
    body: `sample msg body`,
    cta: '',
    img: ''
  },
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
IPFS payload for single recipient(target)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 3, // target
  identityType: 1, // ipfs payload
  ipfsHash: 'bafkreicuttr5gpbyzyn6cyapxctlr7dk2g6fnydqxy6lps424mcjcn73we', // IPFS hash of the payload
  recipients: 'eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1', // recipient address
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
IPFS payload for group of recipients(subset)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 4, // subset
  identityType: 1, // ipfs payload
  ipfsHash: 'bafkreicuttr5gpbyzyn6cyapxctlr7dk2g6fnydqxy6lps424mcjcn73we', // IPFS hash of the payload
  recipients: ['eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1', 'eip155:5:0x52f856A160733A860ae7DC98DC71061bE33A28b3'], // recipients addresses
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
IPFS payload for all recipients(broadcast)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 1, // broadcast
  identityType: 1, // direct payload
  ipfsHash: 'bafkreicuttr5gpbyzyn6cyapxctlr7dk2g6fnydqxy6lps424mcjcn73we', // IPFS hash of the payload
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Minimal payload for single recipient(target)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 3, // target
  identityType: 0, // Minimal payload
  notification: {
    title: `[SDK-TEST] notification TITLE:`,
    body: `[sdk-test] notification BODY`
  },
  payload: {
    title: `[sdk-test] payload title`,
    body: `sample msg body`,
    cta: '',
    img: ''
  },
  recipients: 'eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1', // recipient address
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Minimal payload for a group of recipient(subset)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 4, // subset
  identityType: 0, // Minimal payload
  notification: {
    title: `[SDK-TEST] notification TITLE:`,
    body: `[sdk-test] notification BODY`
  },
  payload: {
    title: `[sdk-test] payload title`,
    body: `sample msg body`,
    cta: '',
    img: ''
  },
  recipients: ['eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1', 'eip155:5:0x52f856A160733A860ae7DC98DC71061bE33A28b3'], // recipients address
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Minimal payload for all recipients(broadcast)
// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 1, // broadcast
  identityType: 0, // Minimal payload
  notification: {
    title: `[SDK-TEST] notification TITLE:`,
    body: `[sdk-test] notification BODY`
  },
  payload: {
    title: `[sdk-test] payload title`,
    body: `sample msg body`,
    cta: '',
    img: ''
  },
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Graph payload for single recipient(target)

Make sure the channel has the graph id you are providing!!

// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 3, // target
  identityType: 3, // Subgraph payload
  graph: {
    id: '_your_graph_id',
    counter: 3
  },
  recipients: 'eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1', // recipient address
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Graph payload for group of recipients(subset)

Make sure the channel has the graph id you are providing!!

// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 4, // subset
  identityType: 3, // graph payload
  graph: {
    id: '_your_graph_id',
    counter: 3
  },
  recipients: ['eip155:5:0xCdBE6D076e05c5875D90fa35cc85694E1EAFBBd1', 'eip155:5:0x52f856A160733A860ae7DC98DC71061bE33A28b3'], // recipients addresses
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});
Graph payload for all recipients(broadcast)

Make sure the channel has the graph id you are providing!!

// apiResponse?.status === 204, if sent successfully!
const apiResponse = await PushAPI.payloads.sendNotification({
  signer,
  type: 1, // broadcast
  identityType: 3, // graph payload
  graph: {
    id: '_your_graph_id',
    counter: 3
  },
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // your channel address
  env: 'staging'
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
signer*--Signer object
channel*string-channel address (CAIP)
type*number-Notification Type
Target = 3 (send to 1 address),
Subset = 4 (send to 1 or more addresses),
Broadcast = 1 (send to all addresses)
identityType*number-Identity Type
Minimal = 0,
IPFS = 1,
Direct Payload = 2,
Subgraph = 3 }
recipients*string or string[]-for Notification Type = Target it is 1 address,
for Notification Type = Subset, Broadcast it is an array of addresses (CAIP)
notification.title*string-Push Notification Title (not required for identityType IPFS, Subgraph)
notification.body*string-Push Notification Body (not required for identityType IPFS, Subgraph)
payload.titlestring-Notification Title (not required for identityType IPFS, Subgraph)
payload.bodystring-Notification Body (not required for identityType IPFS, Subgraph)
payload.ctastring-Notification Call To Action url (not required for identityType IPFS, Subgraph)
payload.imgstring-Notification Media url (not required for identityType IPFS, Subgraph)
payload.sectypestring-If Secret Notification then pass (not required for identityType IPFS, Subgraph)
graph.idstring-graph id, required only if the identityType is 3
graph.counterstring-graph counter, required only if the identityType is 3
ipfsHashstring-ipfsHash, required only if the identityType is 1
expirynumber-(optional) epoch value if the notification has an expiry
hiddenbooleanfalse(optional) true if we want to hide the notification
envstring'prod'API env - 'prod', 'staging', 'dev'

Notification Helper Utils

Parsing notifications

Utils method to parse raw Push Feeds API response into a pre-defined shape as below.

// fetch some raw feeds data
const apiResponse = await PushAPI.user.getFeeds({
  user: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // user address
  raw: true,
  env: 'staging'
});
// parse it to get a specific shape of object.
const parsedResults = PushAPI.utils.parseApiResponse(apiResponse);

const [oneNotification] = parsedResults;

// Now this object can be directly used by for e.g. "@pushprotocol/uiweb"  NotificationItem component as props.

const {
  cta,
  title,
  message,
  app,
  icon,
  image,
  url,
  blockchain,
  secret,
  notification
} = oneNotification;

We get the above keys after the parsing of the API repsonse.

Advanced Notifications (WIP)

DEPRECATED

Get a channel's subscriber list of addresses
const subscribers = await PushAPI.channels._getSubscribers({
  channel: 'eip155:5:0xD8634C39BBFd4033c0d3289C4515275102423681', // channel address in CAIP
  env: 'staging'
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
channel*string-channel address (CAIP)
envstring'prod'API env - 'prod', 'staging', 'dev'

For Chat

Create user for chat

const user = await PushAPI.user.create({
   account: '0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
   env: 'staging',
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'

Get user data for chat

const user = await PushAPI.user.get({
   account: '0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
   env: 'staging',
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'

Fetching list of user chats

const chats = await PushAPI.chat.chats({
    account: 0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7,
    pgpPrivateKey: decryptedPvtKey,
    toDecrypt: true,
    env: 'staging',
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
toDecryptbooleanfalseif "true" the method will return decrypted message content in response
pgpPrivateKeystringnullmandatory for users having pgp keys

Fetching list of user chat requests

const chats = await PushAPI.chat.requests({
    account: 0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7,
    pgpPrivateKey: decryptedPvtKey,
    toDecrypt: true,
    env: 'staging',
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
toDecryptbooleanfalseif "true" the method will return decrypted message content in response
pgpPrivateKeystringnullmandatory for users having pgp keys

Fetching conversation hash between two users

const threadhash = await PushAPI.chat.conversationHash({
        account: '20x18C0Ab0809589c423Ac9eb42897258757b6b3d3d',
        conversationId: '0xFA3F8E79fb9B03e7a04295594785b91588Aa4DC8', // receiver's address or chatId of a group
        env,
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
conversationId*string-receiver's address or chatId of a group

Fetching history between two users


      const chatHistory = await PushAPI.chat.history({
        threadhash:threadhash.threadHash,
        account: '0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
        pgpPrivateKey: decryptedPvtKey,
        limit:2,
        toDecrypt:true,
        env:'staging',
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
threadhash*string-conversation hash between two users
toDecryptbooleanfalseif "true" the method will return decrypted message content in response
pgpPrivateKeystringnullmandatory for users having pgp keys
limitnumber10number of messages between two users

Fetching latest chat between two users


      const chatHistory = await PushAPI.chat.latest({
        threadhash:threadhash.threadHash,
        account: '0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
        pgpPrivateKey: decryptedPvtKey,
        limit:2,
        toDecrypt:true,
        env:'staging',
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
threadhash*string-conversation hash between two users
toDecryptbooleanfalseif "true" the method will return decrypted message content in response
pgpPrivateKeystringnullmandatory for users having pgp keys

To approve a chat request

const response = await PushAPI.chat.approve({
        status: 'Approved',
        account: '0x18C0Ab0809589c423Ac9eb42897258757b6b3d3d',
        senderAddress : '0x873a538254f8162377296326BB3eDDbA7d00F8E9', // receiver's address or chatId of a group
        env:'staging',
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
senderAddress*string-receiver's address or chatId of a group
status'Approved''Approved'flag for approving and rejecting chat request, supports only approving for now

To send a message

const response = await PushAPI.chat.send({
        messageContent: 'Hi',
        messageType: 'Text',
        receiverAddress: '0x08E834a388Cee21d4d7571075146841C8eE621a4', // receiver's address or chatId of a group
        account: '0x57eAd5826B1E0A7074E1aBf1A062714A2dE0f8B4',
        pgpPrivateKey: decryptedPvtKey,
        apiKey:"tAWEnggQ9Z.UaDBNjrvlJZx3giBTIQDcT8bKQo1O1518uF1Tea7rPwfzXv2ouV5rX9ViwgJUrXm"
        env: 'staging',
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
senderAddress*string-receiver's address or chatId of a group
messageContentstring''message to be sent
messageType'Text' | 'Image' | 'File' | 'GIF''Text'type of messageContent
pgpPrivateKeystringnullmandatory for users having pgp keys
apiKeystring''apiKey for using chat

To get group details by chatId

const response = await PushAPI.chat.getGroup({
  chatId: '190591e84108cdf12e62eecabf02ddb123ea92f1c06fb98ee9b5cf3871f46fa9',
  env: 'staging',
});

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
chatId*string-group chat id
envstring'prod'API env - 'prod', 'staging', 'dev'

To create a group

const response = await PushAPI.chat.createGroup({
        groupName:'Push Protocol group',
        groupDescription:'This is the oficial group for Push Protocol,
        members: ['0x9e60c47edF21fa5e5Af33347680B3971F2FfD464','0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
        groupImage: &lt;group image link&gt; ,
        admins: ['0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
        isPublic: true,
        account: '0xD993eb61B8843439A23741C0A3b5138763aE11a4',
        env: 'staging',
        pgpPrivateKey: decryptedPvtKey, //decrypted private key
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
groupName*string-group name
groupDescription*string-group description
groupImage*string-group image link
members*Array-wallet addresses of all members except admins and groupCreator
admins*Array-wallet addresses of all admins except members and groupCreator
isPublic*boolean-true for public group, false for private group
pgpPrivateKeystringnullmandatory for users having pgp keys

To update group details

Note - updateGroup is an idompotent call

const response = await PushAPI.chat.updateGroup({
        groupName:'Push Chat group',
        groupDescription:'This is the updated description for Push Chat,
        members: ['0x2e60c47edF21fa5e5A333347680B3971F1FfD456','0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
        groupImage: &lt;group image link&gt; ,
        admins: ['0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
        account: '0xD993eb61B8843439A23741C0A3b5138763aE11a4',
        env: 'staging',
        pgpPrivateKey: decryptedPvtKey, //decrypted private key
      });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
account*string-user address
envstring'prod'API env - 'prod', 'staging', 'dev'
groupName*string-group name
groupDescription*string-group description
groupImage*string-group image link
members*Array-wallet addresses of all members except admins and groupCreator
admins*Array-wallet addresses of all admins except members and groupCreator
pgpPrivateKeystringnullmandatory for users having pgp keys

Chat Helper Utils

Decrypting encrypted pgp private key
import { IUser } from '@pushprotocol/restapi';

const decryptedPvtKey = await PushAPI.chat.decryptWithWalletRPCMethod(
          (connectedUser as IUser).encryptedPrivateKey, //encrypted private key 
          '0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7' //user address
        );
Decrypting messages
import { IUser } from '@pushprotocol/restapi';

const decryptedChat = await PushAPI.chat.decryptConversation({
    messages: chatHistory, //array of message object fetched from chat.history method
    connectedUser, // user meta data object fetched from chat.get method
    pgpPrivateKey:decryptedPvtKey, //decrypted private key
    env:'staging',
  });

Allowed Options (params with * are mandatory)

ParamTypeDefaultRemarks
envstring'prod'API env - 'prod', 'staging', 'dev'
messages*string-array of message object fetched from chat.history method
connectedUser*IUserfalseuser meta data object
pgpPrivateKeystringnullmandatory for users having pgp keys

FAQs

Package last updated on 17 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc