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@latest
or
npm install @pushprotocol/restapi@latest
Note - ethers is an optional peer dependency and is required only when sdk is used with ethers signer.
Import SDK
import { PushAPI } from '@pushprotocol/restapi';
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:
import { useWeb3React } from "@web3-react/core";
.
.
.
const { account, library, chainId } = useWeb3React();
const _signer = library.getSigner(account);
About blockchain agnostic address format
In any of the below methods (unless explicitly stated otherwise) we accept either -
-
CAIP format: for any on chain addresses We strongly recommend using this address format. Learn more about the format and examples.
(Example : eip155:1:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb
)
-
ETH address format: only for backwards compatibility.
(Example: 0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb
)
Chat blockchain agnostic address format
Note - For chat related apis, the address is in the format: eip155:<address> instead of eip155:<chainId>:<address>, we call this format Partial CAIP
(Example : eip155:0xab16a96d359ec26a11e2c2b3d8f8b8942d5bfcdb
)
SDK Features
Manage User
APIs to Initialise User and User APIs.
Initialize
const userAlice = await PushAPI.initialize(signer, {
env: 'staging',
});
Parameters
Param | Type | Default | Remarks |
---|
signer | SignerType | - | Ethers or Viem Signer. |
options * | PushAPIInitializeProps | - | Optional configuration properties for initializing the PushAPI. |
options.env * | ENV | staging | API env - 'prod', 'staging', 'dev'. |
options.progressHook * | (progress: ProgressHookType) => void | - | A callback function to receive progress updates during initialization. |
options.account * | string | - | The account to associate with the PushAPI. If not provided, it is derived from signer. |
options.version * | string | ENC_TYPE_V3 | The encryption version to use for the PushAPI. |
options.versionMeta * | { NFTPGP_V1 ?: { password: string } } | - | Metadata related to the encryption version, including a password if needed, and reset for resetting nft profile |
options.autoUpgrade * | boolean | true | If true , upgrades encryption keys to the latest encryption version. |
options.origin * | string | - | Specify origin or source while creating a Push Profile. |
* - Optional
Reinitialize
await userAlice.reinitialize({
versionMeta: { NFTPGP_V1: { password: 'NewPassword' } },
});
Parameters
Param | Type | Default | Remarks |
---|
options | PushAPIInitializeProps | - | Optional configuration properties for initializing the PushAPI. |
options.versionMeta | { NFTPGP_V1 ?: password: string } | - | Metadata related to the encryption version, including a password if needed. |
Fetch User Info
const response = await userAlice.info();
Parameters:
Param | Type | Default | Remarks |
---|
options | InfoOptions | - | Optional configuration properties |
- | options.overrideAccount | - | The account for which info is retrieved, can override to get info of other accounts not owned by the user. If not provided, it is derived from signer. |
Fetch Profile Info
const response = await userAlice.profile.info();
Parameters:
Param | Type | Default | Remarks |
---|
options | InfoOptions | - | Optional configuration properties |
- | options.overrideAccount | - | The account for which info is retrieved, can override to get info of other accounts not owned by the user. If not provided, it is derived from signer. |
Update Profile Info
const response = await userAlice.profile.update({
name: 'Alice',
description: 'Alice is a software developer',
picture: imageInBase64Format,
});
Param | Type | Default | Remarks |
---|
options | object | - | Configuration options for updating profile |
options.name * | string | - | Profile Name |
options.description * | string | - | Profile Description |
options.picture * | string | - | Profile Picture |
* - Optional
Fetch Encryption Info
const aliceEncryptionInfo = await userAlice.encryption.info();
Update Encryption
const walletAlice = await userAlice.encryption.update(
CONSTANTS.USER.ENCRYPTION_TYPE.PGP_V3
);
const nftAlice = await userAlice.encryption.update(
CONSTANTS.USER.ENCRYPTION_TYPE.NFTPGP_V1,
{
versionMeta: {
NFTPGP_V1: {
password: 'new_password',
},
},
}
);
Param | Type | Default | Remarks |
---|
options * | object | - | Optional Configuration for updating encryption |
options.versionMeta * | { NFTPGP_V1 ?: { password : string} } | - | New Password ( In case of NFT Profile ) |
* - Optional
For Push Notifications
Initializing User is the first step before proceeding to sending/interacting with Notification APIs. Please refer Initialize User Section
Fetch Inbox Or Spam notifications
const aliceInfo = await userAlice.notification.list('INBOX');
Parameters:
Parameter | Type | Default | Description |
---|
spam | INBOX or SPAM | INBOX | A string representing the type of feed to retrieve. |
options * | object | - | An object containing additional options for filtering and pagination. |
options.account * | string | - | Account in full CAIP |
options.channels * | string[] | - | An array of channels to filter feeds by. |
options.page * | number | - | A number representing the page of results to retrieve. |
options.limit * | number | - | A number representing the maximum number of feeds to retrieve per page. |
options.raw * | boolean | - | A boolean indicating whether to retrieve raw feed data. |
* - Optional
Fetch user subscriptions
const subscriptions = await userAlice.notification.subscriptions();
Parameters:
Parameter | Type | Default | Description |
---|
options * | object | - | An object containing additional options for subscriptions. |
options.account * | string | - | Account in supported address format. |
options.page * | number | - | page of results to retrieve. |
options.limit * | number | - | represents the maximum number of subscriptions to retrieve per page. |
* - Optional
Subscribe to a channel
const subscribeStatus = await userAlice.notification.subscribe(channelInCAIP, {
settings,
});
Parameters:
Parameter | Type | Default | Description |
---|
channel | string | - | Channel/Alias address in CAIP format |
settings * | objects[] | - | Contain array of individual setting object |
Individual setting object:
Param | Type | Subtype | Default | Remarks |
---|
setting | object | - | - | Individual setting object |
- | enabled | boolean | true | Indicates if setting is enabled or disabled |
- | value | string | - | The value set by the user |
* - Optional
Unsubscribe to a channel
const unsubscribeResponse = await userAlice.notification.unsubscribe(
channelAddressInCAIP
);
Parameters:
Parameter | Type | Default | Description |
---|
channel | string | - | Channel/Alias address in CAIP format |
* - Optional
Channel information
const channelInfo = await userAlice.channel.info(channelAddressInCAIP);
Parameters:
Parameter | Type | Default | Description |
---|
channel * | string | - | Channel address in CAIP format |
* - Optional
Search Channels
const searchResult = await userAlice.channel.search('push');
Parameters:
Parameter | Type | Default | Description |
---|
query | string | - | The search query to find channels. |
options* | ChannelSearchOptions | - | Configuration options for the search. |
options.page* | number | - | The page of results to retrieve. Default is set to 1 |
options.limit* | number | - | The maximum number of channels to retrieve per page. Default is set to 10 |
* - Optional
Get Subscribers Of A Channel
const channelSubscribers = await userAlice.channel.subscribers();
Parameters:
Param | Type | Subtype | Default | Remarks |
---|
options | object | - | - | Configuration options for retrieving subscribers. |
- | options.channel | string | Derived from signer | Channel address in chain specific wallet format. If no channel address is passed, then signer is used to derive the channel |
- | options.page | number | - | A number representing the page of results to retrieve. |
- | options.limit | number | - | Represents the maximum number of subscriptions to retrieve per page |
- | options.setting | boolean | false | A boolean flag if when set to true, fetches user settings along with the subscriber |
- | options.category | number | - | Filters out subscribers that have enabled a specific category of notification settings |
* - Optional
Send a notification
const sendNotifRes = await userAlice.channel.send(['*'], {
notification: { title: 'test', body: 'test' },
});
Parameters:
Param | Type | Remarks |
---|
recipients | string[] | An array of recipient addresses passed in any supported wallet address format. Possible values are: Broadcast -> [*], Targeted -> [0xA], Subset -> [0xA, 0xB], see types of notifications for more info. |
options | NotificationOptions | Configuration options for sending notifications. |
options.notification | INotification | An object containing the notification's title and body. (Mandatory) |
options.notification.title | string | The title for the notification. If not provided, it is taken from notification.title. |
options.notification.body | string | The body of the notification. If not provided, it is taken from notification.body. |
options.payload * | IPayload | An object containing additional payload information for the notification. |
options.payload.title * | string | The title for the notification. If not provided, it is taken from notification.title. |
options.payload.body * | string | The body of the notification. If not provided, it is taken from notification.body. |
options.payload.cta * | string | Call to action for the notification. |
options.payload.embed * | string | Media information like image/video links |
options.payload.category * | string | Don't pass category if you are sending a generic notification. Notification category represents index point of each individual settings. Pass this if you want to indicate what category of notification you are sending (If channel has settings enabled). For example, if a channel has 10 settings, then a notification of category 7 indicates it's a notification sent for setting 7, if user has turned setting 7 off then Push ndoes will stop notif from getting to the user. |
options.payload.meta * | { domain?: string, type: string, data: string } | Metadata for the notification, including domain, type, and data. |
options.config * | IConfig | An object containing configuration options for the notification. |
options.config.expiry * | number | Expiry time for the notification in seconds |
options.config.silent * | boolean | Indicates whether the notification is silent. |
options.config.hidden * | boolean | Indicates whether the notification is hidden. |
options.advanced * | IAdvance | An object containing advanced options for the notification. |
options.advanced.graph * | { id: string, counter: number } | Advanced options related to the graph based notification. |
options.advanced.ipfs * | string | IPFS information for the notification. |
options.advanced.minimal * | string | Minimal Payload type notification. |
options.advanced.chatid * | string | For chat based notification. |
options.advanced.pgpPrivateKey * | string | PGP private key for chat based notification. |
options.channel * | string | Channel address in CAIP. Mostly used when a delegator sends a notification on behalf of the channel |
* - Optional
Create a channel
const response = await userAlice.channel.create({
name: 'Test Channel',
description: 'Test Description',
icon: imageBase64Format,
url: 'https://push.org',
});
Parameters:
Param | Type | Default | Remarks |
---|
options | object | - | Configuration options for creating a channel |
options.name | string | - | The name of the channel |
options.description | string | - | A description of the channel |
options.icon | string (base64 encoded) | - | The channel's icon in base64 encoded string format |
options.url | string | - | The URL associated with the channel |
options.alias | string | - | alias address in in chain specific wallet format |
options.progresshook | (progress) => void | - | A callback function that's called during channel creation progress, see progress object |
* - Optional
Optional:
Informs about individual progress stages during channel creation if progresshook is function is passed during channel creation API call.
Param | Type | Default | Remarks |
---|
progress | object | - | progress object that is passed in the callback |
Progress.id | string | - | Predefined, ID associated with the progress objects |
Progress.level | string | - | Predefined, Level associated with the progress objects |
Progress.title | string | - | Predefined, title associated with the progress objects |
Progress.info | string | - | Predefined, info associated with the progress objects |
Progress object details
Progress.id | Progress.level | Progress.title | Progress.info |
---|
PUSH-CHANNEL-CREATE-01 | INFO | Uploading data to IPFS | The channel’s data is getting uploaded to IPFS |
PUSH-CHANNEL-CREATE-02 | INFO | Approving PUSH tokens | Gives approval to Push Core contract to spend 50 $PUSH |
PUSH-CHANNEL-CREATE-03 | INFO | Channel is getting created | Calls Push Core contract to create your channel |
PUSH-CHANNEL-CREATE-04 | SUCCESS | Channel creation is done, Welcome to Push Ecosystem | Channel creation is completed |
PUSH-CHANNEL-UPDATE-01 | INFO | Uploading new data to IPFS | The channel’s new data is getting uploaded to IPFS |
PUSH-CHANNEL-UPDATE-02 | INFO | Approving PUSH tokens | Gives approval to Push Core contract to spend 50 $PUSH |
PUSH-CHANNEL-UPDATE-03 | INFO | Channel is getting updated | Calls Push Core contract to update your channel details |
PUSH-CHANNEL-UPDATE-04 | SUCCESS | Channel is updated with new data | Channel is successfully updated |
PUSH-ERROR-02 | ERROR | Transaction failed for a function call | Transaction failed |
Update channel information
const updateChannelRes = await userAlice.channel.update({
name: newChannelName,
description: newChannelDescription,
url: newChannelURL,
icon: newBase64FormatImage,
alias: newAliasAddressInCAIP,
});
Parameters:
Parameter | Type | Default | Description |
---|
options | - | - | Configuration options for creating a channel. |
options\.name | string | - | New name of the channel. |
options.description | string | - | New description of the channel. |
options.icon | string (base64 encoded) | - | The channel's new icon in base64 encoded string format. |
options.url | string | - | New URL associated with the channel. |
options.alias * | string | - | New alias address in CAIP |
options.progresshook * | () => void | - | A callback function to execute when the channel updation progresses. |
* - Optional
Optional:
Informs about individual progress stages during channel creation if progresshook is function is passed during channel creation API call.
Param | Type | Default | Remarks |
---|
progress | object | - | progress object that is passed in the callback |
Progress.id | string | - | Predefined, ID associated with the progress objects |
Progress.level | string | - | Predefined, Level associated with the progress objects |
Progress.title | string | - | Predefined, title associated with the progress objects |
Progress.info | string | - | Predefined, info associated with the progress objects |
Progress object details
Progress.id | Progress.level | Progress.title | Progress.info |
---|
PUSH-CHANNEL-CREATE-01 | INFO | Uploading data to IPFS | The channel’s data is getting uploaded to IPFS |
PUSH-CHANNEL-CREATE-02 | INFO | Approving PUSH tokens | Gives approval to Push Core contract to spend 50 $PUSH |
PUSH-CHANNEL-CREATE-03 | INFO | Channel is getting created | Calls Push Core contract to create your channel |
PUSH-CHANNEL-CREATE-04 | SUCCESS | Channel creation is done, Welcome to Push Ecosystem | Channel creation is completed |
PUSH-CHANNEL-UPDATE-01 | INFO | Uploading new data to IPFS | The channel’s new data is getting uploaded to IPFS |
PUSH-CHANNEL-UPDATE-02 | INFO | Approving PUSH tokens | Gives approval to Push Core contract to spend 50 $PUSH |
PUSH-CHANNEL-UPDATE-03 | INFO | Channel is getting updated | Calls Push Core contract to update your channel details |
PUSH-CHANNEL-UPDATE-04 | SUCCESS | Channel is updated with new data | Channel is successfully updated |
PUSH-ERROR-02 | ERROR | Transaction failed for a function call | Transaction failed |
Verify a channel
const verifyChannelRes = await userAlice.channel.verify(channel);
Parameters:
Parameter | Type | Default | Description |
---|
channel | string | - | Channel address in CAIP to be verified |
Create channel Setting
const createChannelSettingRes = userAlice.channel.setting([
{
type: 1,
default: 1,
description: 'Receive marketing notifications',
},
{
type: 2,
default: 10,
description: 'Notify when loan health breaches',
data: { upper: 100, lower: 5, ticker: 1 },
},
]);
Parameters:
Property | Type | Default | Description |
---|
type | number | - | The type of notification setting. 1 for boolean type and 2 for slider type |
default | number | - | The default value for the setting. |
description | string | - | A description of the setting. |
data.upper * | number | - | Valid for slider type only. The upper limit for the setting. |
data.lower * | number | - | Valid for slider type only. The lower limit for the setting. |
data.ticker * | number | | Valid for slider type only. The ticker by which the slider moves. |
| * - Optional
Get delegators information
const delegates = await userAlice.channel.delegate.get();
Parameters:
Parameter | Type | Default | Description |
---|
options * | ChannelInfoOptions | - | Configuration options for retrieving delegator information. |
options.channel * | string | - | channel address in CAIP |
* - Optional
Add delegator to a channel or alias
const addedDelegate = await userAlice.channel.delegate.add(delegate);
Parameters:
Parameter | Type | Default | Description |
---|
delegate | string | - | delegator address in CAIP |
Note: Support for contract interaction via viem is coming soon | | | |
Remove delegator from a channel or alias
const removeDelegate = await userAlice.channel.delegate.remove(delegate);
Parameters:
Parameter | Type | Default | Description |
---|
delegate | string | - | delegator address in CAIP |
Note: Support for contract interaction via viem is coming soon | | | |
Alias Information
const aliasInfo = userAlice.channel.alias.info({
alias: aliasAddress,
aliasChain: 'POLYGON',
});
Parameters:
Param | Type | Default | Description |
---|
options | object | - | Configuration options for retrieving alias information. |
options.alias | string | - | The alias address |
options.aliasChain | ALIAS_CHAIN | - | The name of the alias chain, which can be 'POLYGON' or 'BSC' or 'OPTIMISM' or 'POLYGONZKEVM' |
Stream Notifications
const stream = await userAlice.initStream([CONSTANTS.STREAM.NOTIF], {
filter: {
channels: ['*'],
chats: ['*'],
},
connection: {
retries: 3,
},
raw: false,
});
stream.on(CONSTANTS.STREAM.NOTIF, (data: any) => {
console.log(data);
});
stream.connect();
Parameters:
Param | Type | Default | Remarks |
---|
listen | constant | - | can be CONSTANTS.STREAM.CHAT , CONSTANTS.STREAM.CHAT_OPS , CONSTANTS.STREAM.NOTIF , CONSTANTS.STREAM.CONNECT , CONSTANTS.STREAM.DISCONNECT |
options * | PushStreamInitializeProps | - | Optional configuration properties for initializing the stream. |
options.filter * | object | - | Option to configure to enable listening to only certain chats or notifications. |
options.filter.channels * | array of strings | ['*'] | pass list of channels over here to only listen to notifications coming from them. |
options.filter.chats * | array of strings | ['*'] | pass list of chatids over here to only listen to chats coming from them. |
options.connection * | object | - | Option to configure the connection settings of the stream |
options.connection.retries * | number | 3 | Number of automatic retries incase of error |
options.raw * | boolean | false | If enabled, will also respond with meta data useful in verifying the integrity of incoming chats or notifications among other things. |
Stream Notification Events
Listen events | When is it triggered? |
---|
CONSTANTS.STREAM.NOTIF | Whenever a new notification is emitted for the wallet. |
CONSTANTS.STREAM.CONNECT | Whenever the stream establishes connection. |
CONSTANTS.STREAM.DISCONNECT | Whenever the stream gets disconnected. |
For Push Chat
Initializing User is the first step before proceeding to Chat APIs. Please refer Manage User Section
Fetch List of Chats
const aliceChats = await userAlice.chat.list('CHATS');
const aliceRequests = await userAlice.chat.list('REQUESTS');
Param | Type | Default | Remarks |
---|
type | CHATS or REQUESTS | - | Type of Chats to be listed |
options * | Object | - | Optional configuration properties for listing chat |
options.page * | number | 1 | The page number for pagination |
options.limit * | number | 10 | The maximum number of items to retrieve per page |
* - Optional
Fetch Latest Chat
const aliceChats = await userAlice.chat.latest(bobAddress);
Param | Type | Default | Remarks |
---|
recipient | string | - | Target DID ( For Group Chats target is chatId, for 1 To 1 chat target is Push DID ) |
Fetch Chat History
const aliceChatHistoryWithBob = await userAlice.chat.history(bobAddress);
Param | Type | Default | Remarks |
---|
recipient | string | - | Target DID ( For Group Chats target is chatId, for 1 To 1 chat target is Push DID ) |
options * | object | - | Optional Configuration for fetching chat history |
options.reference * | string or null | - | Refers to message refernce hash from where the previous messages are fetched. If null, messages are fetched from latest message |
options.limit * | number | 10 | No. of messages to be loaded |
* - Optional
Send Message
const aliceMessagesBob = await userAlice.chat.send(bobAddress, {
content: 'Hello Bob!',
type: 'Text',
});
Param | Type | Default | Remarks |
---|
recipient | string | - | Recipient ( For Group Chats target is chatId, for 1 To 1 chat target is Push DID ) |
options | object | - | Configuration for message to be sent |
options.type * | Text or Image or Audio or Video or File or MediaEmbed or GIF or Meta or Reaction or Receipt or Intent or Reply or Composite | - | Type of message Content |
options.content | string or {type: Textor Imageor Audioor Videoor Fileor MediaEmbedor GIF ; content: string} [For Reply] or {type: Textor Imageor Audioor Videoor Fileor MediaEmbedor GIF ; content: string}[] [For Composite] | - | Message Content |
options.reference * | string | - | Message reference hash ( Only available for Reaction & Reply Messages ) |
options.info * | { affected : string[]: arbitrary?: { [key: string]: any } } | - | Message reference hash ( Only available for Meta & UserActivity Messages ) |
* - Optional
Accept Chat Request
const bobAcceptAliceRequest = await userBob.chat.accept(aliceAddress);
Param | Type | Default | Remarks |
---|
recipient | string | - | Target ( For Group Chats target is chatId, for 1 To 1 chat target is Push Account ) |
Reject Chat Request
await userBob.chat.reject(aliceAddress);
Param | Type | Default | Remarks |
---|
recipient | string | - | Target ( For Group Chats target is chatId, for 1 To 1 chat target is Push Account ) |
Block Chat User
const AliceBlocksBob = await userAlice.chat.block([bobAddress]);
Param | Type | Default | Remarks |
---|
users | string[] | - | Users to be blocked. |
Unblock Chat User
const AliceUnblocksBob = await userAlice.chat.unblock([bobAddress]);
Param | Type | Default | Remarks |
---|
users | string[] | - | Users to be unblocked. |
Create Group
const createdGroup = await userAlice.chat.group.create(name);
Param | Type | Default | Remarks |
---|
name | string | - | The name of the group to be created. |
options * | object | - | Optional Configuration for creating group. |
options.description * | string | - | A description of the group. |
options.image * | string | - | Image for the group. |
options.members * | string[] | [] | An array of member DID. |
options.admins * | string[] | - | An array of admin DID. |
options.private * | boolean | false | Indicates if the group is private. |
options.rules * | any[] | - | Conditions for entry to the group. |
* - Optional
Fetch Group Info
const fetchGroupInfo = await userAlice.chat.group.info(groupChatId);
Param | Type | Default | Remarks |
---|
chatId | string | - | Group ChatId |
Fetch Group Permissions
const fetchGroupPermissions = await userAlice.chat.group.permissions(
groupChatId
);
Param | Type | Default | Remarks |
---|
chatId | string | - | Group ChatId |
Update Group
const updatedGroup = await userAlice.chat.group.update(chatid, options);
Param | Type | Default | Remarks |
---|
chatId | string | - | Unique identifier of the group. |
options * | object | - | Optional Configuration for updating group. |
options.name * | string | - | Updated Group Name |
options.description * | string | - | Updated Description |
options.image * | string (base 64 format) | - | Updated Image |
options.private * | boolean | false | Indicates if the group is private. |
options.rules * | any[] | - | Define conditions such as token gating, nft gating, custom endpoint for joining or sending message in a group. See conditional group gating to understand rule engine and how to fine tune conditional rules of your group Rules |
* - Optional
Add To Group
const addAdminToGroup = await userAlice.chat.group.add(groupChatId, {
role: 'ADMIN',
accounts: [account1, account2],
});
Param | Type | Default | Remarks |
---|
chatId | string | - | Unique identifier of the group. |
options | object | - | Configuration for adding participants to group. |
options.role | ADMIN or MEMBER | - | Role of added participant |
options.accounts | string[] | - | Added participant addresses |
Remove From Group
const removeAdminFromGroup = await userAlice.chat.group.remove(groupChatId, {
role: 'ADMIN',
accounts: [account1, account2],
});
Param | Type | Default | Remarks |
---|
chatId | string | - | Unique identifier of the group. |
options | object | - | Configuration for adding participants to group. |
options.role | ADMIN or MEMBER | - | Role of added participant |
options.accounts | string[] | - | Added participant addresses |
Join Group
const joinGroup = await userAlice.chat.group.join(groupChatId);
Param | Type | Default | Remarks |
---|
chatId | string | - | Unique identifier of the group. |
Leave Group
const leaveGrp = await userAlice.chat.group.leave(groupChatId);
Param | Type | Default | Remarks |
---|
chatId | string | - | Unique identifier of the group. |
Reject Group Joining Request
await userAlice.chat.group.reject(groupChatId);
Param | Type | Default | Remarks |
---|
chatId | string | - | Unique identifier of the group. |
Stream Chat Events
const stream = await userAlice.initStream(
[
CONSTANTS.STREAM.CHAT,
CONSTANTS.STREAM.NOTIF,
CONSTANTS.STREAM.CONNECT,
CONSTANTS.STREAM.DISCONNECT,
],
{
filter: {
channels: ['*'],
chats: ['*'],
},
connection: {
retries: 3,
},
raw: false,
}
);
stream.on(CONSTANTS.STREAM.CONNECT, async (a) => {
console.log('Stream Connected');
console.log('Sending message to PushAI Bot');
await userAlice.chat.send(pushAIWalletAddress, {
content: 'Hello, from Alice',
type: 'Text',
});
console.log('Message sent to PushAI Bot');
});
stream.on(CONSTANTS.STREAM.CHAT, (message) => {
console.log('Encrypted Message Received');
console.log(message);
});
stream.on(CONSTANTS.STREAM.CHAT_OPS, (data) => {
console.log('Chat operation received.');
console.log(data);
});
await stream.connect();
stream.on(CONSTANTS.STREAM.DISCONNECT, () => {
console.log('Stream Disconnected');
});
Stream chat parameters
Param | Type | Default | Remarks |
---|
listen | constant | - | Choose from various streams: CONSTANTS.STREAM.CHAT , CONSTANTS.STREAM.CHAT_OPS , CONSTANTS.STREAM.NOTIF , CONSTANTS.STREAM.CONNECT , CONSTANTS.STREAM.DISCONNECT |
options * | PushStreamInitializeProps | - | Optional configuration properties for initializing the stream. |
options.filter * | object | - | Configure to listen to specific chats or notifications. |
options.filter.channels * | array of strings | ['*'] | Pass list of channels over here to only listen to notifications coming from them. |
options.filter.chats * | array of strings | ['*'] | Pass list of chatids over here to only listen to chats coming from them. |
options.connection * | object | - | Option to configure the connection settings of the stream |
options.connection.retries * | number | 3 | Number of automatic retries incase of error |
options.raw * | boolean | false | If enabled, respond with metadata useful in verifying the integrity of incoming chats or notifications among other things. |
Stream chat listen events
Listen events | When is it triggered? |
---|
CONSTANTS.STREAM.CHAT | Whenever a chat is received. |
CONSTANTS.STREAM.CHAT_OPS | Whenever a chat operation is received. |
CONSTANTS.STREAM.CONNECT | Whenever the stream establishes connection. |
CONSTANTS.STREAM.DISCONNECT | Whenever the stream gets disconnected. |
For Expected Stream Chat Responses, Visit Push Chat Docs
For Push Spaces
To create a space
const user = await PushAPI.user.get(account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7', env: 'staging');
const pgpDecryptedPvtKey = await PushAPI.chat.decryptPGPKey(encryptedPGPPrivateKey: user.encryptedPrivateKey, signer: _signer);
const response = await PushAPI.space.create({
spaceName:'wasteful_indigo_warbler',
spaceDescription: 'boring_emerald_gamefowl',
listeners: ['0x9e60c47edF21fa5e5Af33347680B3971F2FfD464','0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
spaceImage: <space image link> ,
speakers: ['0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
isPublic: true,
account: '0xD993eb61B8843439A23741C0A3b5138763aE11a4',
env: 'staging',
pgpPrivateKey: pgpDecryptedPvtKey,
scheduleAt: new Date("2024-07-15T14:48:00.000Z"),
scheduleEnd: new Date("2024-07-15T15:48:00.000Z")
});
To create a token gated space
const user = await PushAPI.user.get(account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7', env: 'staging');
const pgpDecryptedPvtKey = await PushAPI.chat.decryptPGPKey(encryptedPGPPrivateKey: user.encryptedPrivateKey, signer: _signer);
const response = await PushAPI.space.create({
spaceName:'wasteful_indigo_warbler',
spaceDescription: 'boring_emerald_gamefowl',
listeners: ['0x9e60c47edF21fa5e5Af33347680B3971F2FfD464','0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
spaceImage: <space image link> ,
speakers: ['0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
rules: {
'spaceAccess': {
'conditions': [
{
'any': [
{
'type': 'PUSH',
'category': 'ERC20',
'subcategory': 'holder',
'data': {
'contract': 'eip155:5:0x2b9bE9259a4F5Ba6344c1b1c07911539642a2D33',
'amount': 1000,
'decimals': 18
}
},
{
'type': 'GUILD',
'category': 'guildRoles',
'subcategory': 'specificRole',
'data': {
'guildId': '13468',
'guildRoleId': '19924'
}
}
]
}
]
}
},
isPublic: true,
account: '0xD993eb61B8843439A23741C0A3b5138763aE11a4',
env: 'staging',
pgpPrivateKey: pgpDecryptedPvtKey,
scheduleAt: new Date("2024-07-15T14:48:00.000Z"),
scheduleEnd: new Date("2024-07-15T15:48:00.000Z")
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
account_ | string | - | user address |
spaceName* | string | - | group name |
spaceDescription* | string | - | group description |
spaceImage* | string | - | group image link |
listeners* | Array | - | wallet addresses of all listeners except speakers and spaceCreator |
speakers* | Array | - | wallet addresses of all speakers except listeners and spaceCreator |
isPublic* | boolean | - | true for public space, false for private space |
scheduleAt* | Date | - | Date time when the space is scheduled to start |
scheduleEnd | Date | - | Date time when the space is scheduled to end |
contractAddressERC20 (deprecated) | string | null | ERC20 Contract Address |
numberOfERC20 (deprecated) | int | 0 | Minimum number of tokens required to join the group |
contractAddressNFT (deprecated) | string | null | NFT Contract Address |
numberOfNFTTokens (deprecated) | int | 0 | Minimum number of nfts required to join the group |
rules | Rules | - | conditions for space access (see format below) |
pgpPrivateKey | string | null | mandatory for users having pgp keys |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
Rules format
export enum ConditionType {
PUSH = 'PUSH',
GUILD = 'GUILD',
}
export type Data = {
contract?: string;
amount?: number;
decimals?: number;
guildId?: string;
guildRoleId?: string;
guildRoleAction?: 'all' | 'any';
url?: string;
comparison?: '>' | '<' | '>=' | '<=' | '==' | '!=';
};
export type ConditionBase = {
type?: ConditionType;
category?: string;
subcategory?: string;
data?: Data;
access?: Boolean;
};
export type Condition = ConditionBase & {
any?: ConditionBase[];
all?: ConditionBase[];
};
export interface Rules {
entry?: {
conditions: Array<Condition | ConditionBase>;
};
chat?: {
conditions: Array<Condition | ConditionBase>;
};
}
To check user access of a token gated space
const response = await PushAPI.space.getAccess({
spaceId:'8f7be0068a677df166c2e5b8a9030fe8a4341807150339e588853c0049df3106',
did: '0x9e60c47edF21fa5e5Af33347680B3971F2FfD464'
env: 'staging',
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId | string | - | space address |
did | string | - | user address |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To update space details
Note - updateSpace is an idompotent call
const user = await PushAPI.user.get(account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7', env: 'staging');
const pgpDecryptedPvtKey = await PushAPI.chat.decryptPGPKey(encryptedPGPPrivateKey: user.encryptedPrivateKey, signer: _signer);
const response = await PushAPI.space.update({
spaceId: 'spaces:e0553610da88dacac70b406d1222a6881c0bde2c5129e58b526b5ae729d82116',
spaceName: 'Push Space 3',
spaceDescription: 'This is the oficial space for Push Protocol',
listeners: ['0x2e60c47edF21fa5e5A333347680B3971F1FfD456','0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
spaceImage: <group image link> ,
speakers: ['0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
scheduleAt: '2023-07-15T14:48:00.000Z',
scheduleEnd: '2023-07-15T15:48:00.000Z',
status: PushAPI.ChatStatus.PENDING,
account: '0xD993eb61B8843439A23741C0A3b5138763aE11a4',
env: 'staging',
pgpPrivateKey: pgpDecryptedPvtKey,
});
To update token gated space details
Note - updateSpace is an idompotent call
const user = await PushAPI.user.get(account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7', env: 'staging');
const pgpDecryptedPvtKey = await PushAPI.chat.decryptPGPKey(encryptedPGPPrivateKey: user.encryptedPrivateKey, signer: _signer);
const response = await PushAPI.space.update({
spaceId: 'spaces:e0553610da88dacac70b406d1222a6881c0bde2c5129e58b526b5ae729d82116',
spaceName: 'Push Space 3',
spaceDescription: 'This is the oficial space for Push Protocol',
listeners: ['0x2e60c47edF21fa5e5A333347680B3971F1FfD456','0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
spaceImage: <group image link> ,
speakers: ['0x3829E53A15856d1846e1b52d3Bdf5839705c29e5'],
scheduleAt: '2023-07-15T14:48:00.000Z',
scheduleEnd: '2023-07-15T15:48:00.000Z',
status: PushAPI.ChatStatus.PENDING,
rules: {
'entry': {
'conditions': [
{
'any': [
{
'type': 'PUSH',
'category': 'ERC20',
'subcategory': 'token_holder',
'data': {
'address': 'eip155:5:0x2b9bE9259a4F5Ba6344c1b1c07911539642a2D33',
'amount': 1000,
'decimals': 18
}
},
{
'type': 'GUILD',
'category': 'guildRoles',
'subcategory': 'allRoles',
'data': {
'guildId': '13468'
}
}
]
}
]
},
'chat': {
'conditions': [
{
'all': [
{
'type': 'PUSH',
'category': 'ERC20',
'subcategory': 'token_holder',
'data': {
'address': 'eip155:5:0x2b9bE9259a4F5Ba6344c1b1c07911539642a2D33',
'amount': 1000,
'decimals': 18
}
},
{
'type': 'GUILD',
'category': 'guildRoles',
'subcategory': 'specificRole',
'data': {
'guildId': '13468',
'guildRoleId': '19924'
}
}
]
}
]
}
},
account: '0xD993eb61B8843439A23741C0A3b5138763aE11a4',
env: 'staging',
pgpPrivateKey: pgpDecryptedPvtKey,
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | Id of the space |
account* | string | - | user address |
spaceName* | string | - | space name |
spaceDescription* | string | - | space description |
spaceImage* | string | - | space image |
status* | string | - | space status - 'ACTIVE', 'PENDING', 'ENDED' |
listeners* | Array | - | wallet addresses of all listeners except speakers and spaceCreator |
speakers* | Array | - | wallet addresses of all speakers except listeners and spaceCreator |
scheduleAt* | Date | - | Date time when the space is scheduled to start |
scheduleEnd | Date | - | Date time when the space is scheduled to end |
contractAddressERC20 (deprecated) | string | null | ERC20 Contract Address |
numberOfERC20 (deprecated) | int | 0 | Minimum number of tokens required to join the space |
contractAddressNFT (deprecated) | string | null | NFT Contract Address |
numberOfNFTTokens (deprecated) | int | 0 | Minimum number of nfts required to join the space |
rules | Rules | - | conditions for space and chat access (see format above) |
pgpPrivateKey | string | null | mandatory for users having pgp keys |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To get space details by spaceId
const response = await PushAPI.space.get({
spaceId:
'spaces:108f766a5053e2b985d0843e806f741da5ad754d128aff0710e526eebc127afc',
env: 'staging',
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To start a space
const response = await PushAPI.space.start({
spaceId:
'spaces:108f766a5053e2b985d0843e806f741da5ad754d128aff0710e526eebc127afc',
env: 'staging',
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To stop a space
const response = await PushAPI.space.stop({
spaceId:
'spaces:108f766a5053e2b985d0843e806f741da5ad754d128aff0710e526eebc127afc',
env: 'staging',
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To approve a space request
const response = await PushAPI.space.approve({
status: 'Approved',
account: '0x18C0Ab0809589c423Ac9eb42897258757b6b3d3d',
senderAddress: '0x873a538254f8162377296326BB3eDDbA7d00F8E9',
env: 'staging',
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
status | 'Approved' | 'Approved' | flag for approving and rejecting space request, supports only approving for now |
senderAddress_ | string | - | space request sender's address or spaceId of a space |
signer* | - | - | signer object |
pgpPrivateKey | string | null | mandatory for users having pgp keys |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To add listeners to space
const response = await PushAPI.space.addListeners({
spaceId,
listeners: [
`eip155:0x65585D8D2475194A26C0B187e6bED494E5D68d5F`,
`eip155:0xE99F29C1b2A658a478E7766D5A2bB28322326C45`,
],
signer: signer,
pgpPrivateKey: pgpDecrpyptedPvtKey,
env: env as ENV,
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
listeners | Array | - | new listeners that needs to be added to the space. Don't add listeners which are already part of space |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To remove listeners from space
const response = await PushAPI.space.removeListeners({
spaceId,
listeners: [
`eip155:0xB12869BD3a0F9109222D67ba71e8b109B46908f9`,
`eip155:0x2E3af36E1aC6EEEA2C0d59E43Be1926aBB9eE0BD`,
],
signer: signer,
pgpPrivateKey: pgpDecrpyptedPvtKey,
env: env as ENV,
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
listeners | Array | - | existing listeners that needs to be removed from the space. Don't add listeners which are not part of space |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To add speakers to space
const response = await PushAPI.space.addSpeakers({
spaceId,
listeners: [
`eip155:0x65585D8D2475194A26C0B187e6bED494E5D68d5F`,
`eip155:0xE99F29C1b2A658a478E7766D5A2bB28322326C45`,
],
signer: signer,
pgpPrivateKey: pgpDecrpyptedPvtKey,
env: env as ENV,
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
speakers | Array | - | new speakers that needs to be added to the space. Don't add speakers which are already part of space |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
To remove speakers from space
const response = await PushAPI.space.removeSpeakers({
spaceId,
speakers: [
`eip155:0xB12869BD3a0F9109222D67ba71e8b109B46908f9`,
`eip155:0x2E3af36E1aC6EEEA2C0d59E43Be1926aBB9eE0BD`,
],
signer: signer,
pgpPrivateKey: pgpDecrpyptedPvtKey,
env: env as ENV,
});
Allowed Options (params with _ are mandatory)
Param | Type | Default | Remarks |
---|
spaceId_ | string | - | space id |
speakers | Array | - | existing speakers that needs to be removed from the space. Don't add speakers which are not part of space |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
Fetching list of user spaces
const spaces = await PushAPI.space.spaces({
account: string;
pgpPrivateKey?: string;
toDecrypt?: boolean;
env?: ENV;
});
Param | Type | Default | Remarks |
---|
account | string | - | user address (Partial CAIP) |
toDecrypt | boolean | false | if "true" the method will return decrypted message content in response |
pgpPrivateKey | string | null | mandatory for users having pgp keys |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
Example normal user:
const user = await PushAPI.user.get({
account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
env: ENV.STAGING,
})
const pgpDecryptedPvtKey = await PushAPI.chat.decryptPGPKey(encryptedPGPPrivateKey: user.encryptedPrivateKey, signer: signer);
const spaces = await PushAPI.space.spaces({
account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
toDecrypt: true,
pgpPrivateKey: pgpDecryptedPvtKey,
env: ENV.STAGING,
});
Example NFT user:
const user = await PushAPI.user.get({
account: `nft:eip155:${nftChainId}:${nftContractAddress}:${nftTokenId}`,
env: env as ENV,
});
const pgpDecrpyptedPvtKey = await PushAPI.chat.decryptPGPKey({
encryptedPGPPrivateKey: user.encryptedPrivateKey,
signer: nftSigner,
});
const spaces = await PushAPI.space.spaces({
account: `nft:eip155:${nftChainId}:${nftContractAddress}:${nftTokenId}`,
toDecrypt: true,
pgpPrivateKey: pgpDecrpyptedPvtKey,
env: env as ENV,
});
Fetching list of user space requests
const spaces = await PushAPI.space.requests({
account: string;
pgpPrivateKey?: string;
toDecrypt?: boolean;
env?: ENV;
});
Param | Type | Default | Remarks |
---|
account | string | - | user address (Partial CAIP) |
toDecrypt | boolean | false | if "true" the method will return decrypted message content in response |
pgpPrivateKey | string | null | mandatory for users having pgp keys |
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
Example normal user:
const user = await PushAPI.user.get({
account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
env: ENV.STAGING,
})
const pgpDecryptedPvtKey = await PushAPI.chat.decryptPGPKey(encryptedPGPPrivateKey: user.encryptedPrivateKey, signer: signer);
const spaces = await PushAPI.space.requests({
account: 'eip155:0xFe6C8E9e25f7bcF374412c5C81B2578aC473C0F7',
toDecrypt: true,
pgpPrivateKey: pgpDecryptedPvtKey,
env: ENV.STAGING,
});
Example NFT user:
const user = await PushAPI.user.get({
account: `nft:eip155:${nftChainId}:${nftContractAddress}:${nftTokenId}`,
env: env as ENV,
});
const pgpDecrpyptedPvtKey = await PushAPI.chat.decryptPGPKey({
encryptedPGPPrivateKey: user.encryptedPrivateKey,
signer: nftSigner,
});
const spaces = await PushAPI.space.requests({
account: `nft:eip155:${nftChainId}:${nftContractAddress}:${nftTokenId}`,
toDecrypt: true,
pgpPrivateKey: pgpDecrpyptedPvtKey,
env: env as ENV,
});
Fetching list of trending spaces
const spaces = await PushAPI.space.trending({
env?: ENV;
});
Param | Type | Default | Remarks |
---|
env | string | 'prod' | API env - 'prod', 'staging', 'dev' |
page | number | 1 | page index of the results |
limit | number | 10 | number of items in 1 page |
For Push Video
Initializing User is the first step before proceeding to Initializing Video API. Please refer Manage User Section
data & setData
import { TYPES, CONSTANTS } from '@pushprotocol/restapi';
let data: TYPES.VIDEO.DATA = CONSTANTS.VIDEO.INITIAL_DATA;
const setData = (fn: (data: TYPES.VIDEO.DATA) => TYPES.VIDEO.DATA): void => {
data = fn(data);
};
import { useState } from 'react';
const [data, setData] = useState<TYPES.VIDEO.DATA>(
CONSTANTS.VIDEO.INITIAL_DATA
);
Stream Video
These APIs enable you to receive incoming video call request and other video events in real time without polling the API. Push Video achieves this by the use of sockets.
import { CONSTANTS, TYPES } from '@pushprotocol/restapi';
const stream = await userAlice.initStream([CONSTANTS.STREAM.VIDEO], {
filter: {
channels: ['*'],
chats: ['*'],
},
connection: {
retries: 3,
},
raw: false,
});
await stream.on(CONSTANTS.STREAM.VIDEO, (data: TYPES.VIDEO.EVENT) => {
console.log(data);
});
stream.connect();
Stream chat parameters
Param | Type | Default | Remarks |
---|
listen | constant | - | Choose from various streams: CONSTANTS.STREAM.VIDEO ,CONSTANTS.STREAM.CHAT , CONSTANTS.STREAM.CHAT_OPS , CONSTANTS.STREAM.NOTIF , CONSTANTS.STREAM.CONNECT , CONSTANTS.STREAM.DISCONNECT |
options * | PushStreamInitializeProps | - | Optional configuration properties for initializing the stream. |
options.filter * | object | - | Configure to listen to specific chats or notifications. |
options.filter.channels * | array of strings | ['*'] | Pass list of channels over here to only listen to notifications coming from them. |
options.filter.chats * | array of strings | ['*'] | Pass list of chatids over here to only listen to chats coming from them. |
options.connection * | object | - | Option to configure the connection settings of the stream |
options.connection.retries * | number | 3 | Number of automatic retries incase of error |
options.raw * | boolean | false | If enabled, respond with metadata useful in verifying the integrity of incoming chats or notifications among other things. |
* - Optional
Stream events
Listen events | When is it triggered? |
---|
CONSTANTS.STREAM.VIDEO | Whenever video call operation is received. |
CONSTANTS.STREAM.CHAT | Whenever a chat is received. |
CONSTANTS.STREAM.CHAT_OPS | Whenever a chat operation is received. |
CONSTANTS.STREAM.CONNECT | Whenever the stream establishes connection. |
CONSTANTS.STREAM.DISCONNECT | Whenever the stream gets disconnected. |
For Expected Stream Responses, Visit Push Chat Docs
Initializing Video API
const aliceVideoCall = await userAlice.video.initialize(setData, {
stream: stream,
config: {
video: true,
audio: true,
},
media: MediaStream,
});
Parameters:
Param | Type | Sub-Type | Default | Remarks |
---|
onChange | constant | - | - | Function to update the video call data, takes a function as an argument which receives the latest state of data as a param and should return the modified/new state of data |
options | VideoInitializeOptions | - | - | configuration properties for initializing the video. |
- | options.stream | PushStream | - | Option to configure to enable listening to only certain chats or notifications. |
- | options.config.video * | boolean | - | pass true to enable video on start, else pass false . |
- | options.config.audio * | boolean | - | pass true to enable audio on start, else pass false . |
- | options.media * | MediaStream | - | Local stream. For backend use. Defaults to null . |
* - Optional
Request a Video Call
await aliceVideoCall.request([recipient]);
Parameters:
Param | Type | Sub Type | Description |
---|
recipients | string[] | - | Wallet address or addresses of the recipient(s) |
options * | VideoInitializeOptions | - | - |
| options.rules.access.type | string | Identifier for Push Video or Space. We use VIDEO_NOTIFICATION_ACCESS_TYPE.PUSH_CHAT from @pushprotocol/restapi here for Push Video |
| options.rules.access.data.chatId? | string | Unique identifier for every push chat, here, the one between the alice and the bob |
* - Optional
Approve a incoming video call request
await aliceVideoCall.approve();
Parameters:
Param | Type | Sub Type | Description |
---|
address * | string | - | Wallet address of the caller, received in stream listener(s) |
* - Optional
Reject an incoming video call request
await aliceVideoCall.deny();
Parameters:
Param | Type | Sub Type | Description |
---|
address * | string | - | Wallet address of the caller, received in stream listener(s) |
* - Optional
Disconnect an ongoing video call
await aliceVideoCall.disconnect();
Manage Media Config
aliceVideoCall.config({
video: true,
audio: true,
});
Parameters:
Property | Type | Description |
---|
video * | Boolean | true to enable video and false to disable video |
audio * | Boolean | true to enable audio and false to disable audio |
* - Optional
Read current media state
data.local.stream
will hold the media stream of local video.data.incoming[0].stream
will hold the media stream of the peer.data.local.audio
will be true
if the local user audio is enabled and vice versa.data.local.video
will be true
if the local user video is enabled and vice versa.data.incoming[0].audio
will be true
if the remote user audio is enabled and vice versa.data.incoming[0].video
will be true
if the remote user video is enabled and vice versa.