App Context API for PubNub Unreal SDK
App Context provides easy-to-use, serverless storage for user and channel data you need to build innovative, reliable, scalable applications. Use App Context to easily store metadata about your application users and channels, and their membership associations, without the need to stand up your own databases.
PubNub also triggers events when object data is set or removed from the database. Clients can receive these events in real time and update their front-end application accordingly.
User
Get Metadata for All Users
Returns a paginated list of UUID Metadata objects, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->GetAllUUIDMetadata(
FString Include,
int Limit,
FString Start,
FString End,
EPubnubTribool Count,
FOnPubnubResponse OnGetAllUUIDMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Start | FString | Optional | Previously-returned cursor bookmark for fetching the next page. Use "" if you don’t want to paginate with a start bookmark. |
End | FString | Optional | Previously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter. Use "" if you don’t want to paginate with an end bookmark. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetAllUUIDMetadataResponse | FOnPubnubResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelName = "randomChannel";
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetAllUUIDMetadataResponse;
OnGetAllUUIDMetadataResponse.BindDynamic(this, &AMyActor::OnGetAllUUIDMetadataResponse);
FString Include = ""; // No additional attributes
int Limit = 10; // Limit to 10 objects
show all 20 linesReturns
{
"Uuids": [
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2020-06-17T16:28:14.060718Z"
},
{
"Uuid": "uuid-2",
"Name": "Bob Cat",
"Email": "bobc@example.com",
show all 29 linesGet User Metadata
Returns metadata for the specified UUID, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->GetUUIDMetadata(
FString Include,
FString UUIDMetadataID,
FOnPubnubResponse OnGetUUIDMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
UUIDMetadataID | FString | Optional | The metadata ID for which to retrieve the user object. Cannot be "" . |
OnGetUUIDMetadataResponse | FOnPubnubResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetUUIDMetadataResponse;
OnGetUUIDMetadataResponse.BindDynamic(this, &AMyActor::OnGetUUIDMetadataResponse);
FString Include = ""; // No additional attributes
FString UUIDMetadataId = "uuid-1";
PubnubSubsystem->GetUUIDMetadata(Include, Limit, Start, End, Count, OnGetUUIDMetadataResponse);
Returns
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2020-06-17T16:28:14.060718Z"
}
Set User Metadata
Set metadata for a UUID in the database, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetUUIDMetadata(
FString UUIDMetadataID,
FString Include,
FString UUIDMetadataObj
);
Parameter | Type | Required | Description |
---|---|---|---|
UUIDMetadataID | FString | Optional | The metadata ID for which to retrieve the user object. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
UUIDMetadataObj | FString | Optional | The JSON string with the definition of the UUID Metadata object to create. |
API limits
To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString UUIDMetadataID = TEXT("user123"); // Example UUID Metadata ID
FString Include = ""; // No additional attributes
FString UUIDMetadataObj = TEXT("{\"name\":\"John Doe\",\"email\":\"johndoe@example.com\"}"); // Example JSON object
// Call the SetUUIDMetadata method
PubnubSubsystem->SetUUIDMetadata(UUIDMetadataID, Include, UUIDMetadataObj);
Returns
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2020-06-17T16:28:14.060718Z"
}
Remove User Metadata
Removes the metadata from a specified UUID.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveUUIDMetadata(FString UUIDMetadataID);
Parameter | Type | Required | Description |
---|---|---|---|
UUIDMetadataID | FString | Optional | The metadata ID to delete from the user object. Cannot be "" . |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString UUIDMetadataID = TEXT("user123"); // Example UUID Metadata ID
// Call the RemoveUUIDMetadata method
PubnubSubsystem->RemoveUUIDMetadata(UUIDMetadataID);
Returns
This method doesn't have any return value.
Channel
Get Metadata for All Channels
Returns a paginated list of Channel Metadata objects, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->GetAllChannelMetadata(
FString Include,
int Limit,
FString Start,
FString End,
EPubnubTribool Count,
FOnPubnubResponse OnGetAllChannelMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Start | FString | Optional | Previously-returned cursor bookmark for fetching the next page. Use "" if you don’t want to paginate with a start bookmark. |
End | FString | Optional | Previously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter. Use "" if you don’t want to paginate with an end bookmark. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetAllChannelMetadataResponse | FOnPubnubResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelName = "randomChannel";
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetAllUUIDMetadataResponse;
OnGetAllUUIDMetadataResponse.BindDynamic(this, &AMyActor::OnGetAllUUIDMetadataResponse);
FString Include = ""; // No additional attributes
int Limit = 10; // Limit to 10 objects
show all 20 linesReturns
{
"Channels": [
{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:52:19.562469Z"
},
{
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
show all 26 linesGet Channel Metadata
Returns metadata for the specified Channel, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->GetChannelMetadata(
FString Include,
FString ChannelMetadataID,
FOnPubnubResponse OnGetChannelMetadataResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
ChannelMetadataID | FString | Optional | The metadata ID for which to retrieve the channel object. Cannot be "" . |
OnGetChannelMetadataResponse | FOnPubnubResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetChannelMetadataResponse;
OnGetChannelMetadataResponse.BindDynamic(this, &AMyActor::OnGetChannelMetadataResponse);
FString Include = ""; // No additional attributes
FString ChannelMetadataID = "my-channel";
PubnubSubsystem->GetChannelMetadata(Include, ChannelMetadataID, OnGetChannelMetadataResponse);
Returns
{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:52:19.562469Z"
}
Set Channel Metadata
Set metadata for a channel in the database, optionally including the custom data object for each.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetChannelMetadata(
FString ChannelMetadataID,
FString Include,
FString ChannelMetadataObj
);
Parameter | Type | Required | Description |
---|---|---|---|
ChannelMetadataID | FString | Optional | The metadata ID for which to retrieve the channel object. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
ChannelMetadataObj | FString | Optional | The JSON string with the definition of the UUID Metadata object to create. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelMetadataID = TEXT("myChannel"); // Example Channel Metadata ID
FString Include = ""; // No additional attributes
FString ChannelMetadataObj = TEXT("{\"name\":\"PubNub channel\",\"description\":\"The channel for announcements\"}"); // Example JSON object
// Call the SetChannelMetadata method
PubnubSubsystem->SetChannelMetadata(ChannelMetadataID, Include, ChannelMetadataObj);
API limits
To learn about the maximum length of parameters used to set channel metadata, refer to REST API docs.
Returns
{
"Channel": "my-channel",
"Name": "PubNub channel",
"Description": "The channel for announcements",
"Updated": "2020-06-17T16:52:19.562469Z"
}
Remove Channel Metadata
Removes the metadata from a specified channel.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveChannelMetadata(FString ChannelMetadataID);
Parameter | Type | Required | Description |
---|---|---|---|
ChannelMetadataID | FString | Optional | The metadata ID to delete from the channel object. Cannot be "" . |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelMetadataID = TEXT("myChannel"); // Example Channel Metadata ID
// Call the RemoveChannelMetadata method
PubnubSubsystem->RemoveChannelMetadata(ChannelMetadataID);
Returns
This method doesn't have any return value.
Channel Memberships
Get Channel Memberships
The method returns a list of channel memberships for a user. This method doesn't return a user's subscriptions.
Method(s)
- Blueprint
- C++
PubnubSubsystem->GetMemberships(
FString UUIDMetadataID,
FString Include,
int Limit,
FString Start,
FString End,
EPubnubTribool Count,
FOnPubnubResponse OnGetMembershipResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
UUIDMetadataID | FString | Optional | The user ID for which to retrieve the memberships. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex membership attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Start | FString | Optional | Previously-returned cursor bookmark for fetching the next page. Use "" if you don’t want to paginate with a start bookmark. |
End | FString | Optional | Previously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter. Use "" if you don’t want to paginate with an end bookmark. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetMembershipResponse | FOnPubnubResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelName = "randomChannel";
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetMembershipResponse;
OnGetMembershipResponse.BindDynamic(this, &AMyActor::OnGetMembershipResponse);
UUIDMetadataID UserId = "user-1"
FString Include = ""; // No additional attributes
show all 21 linesReturns
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
show all 38 linesSet Channel Memberships
Set channel memberships for a UUID.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetMemberships(
FString UUIDMetadataID,
FString Include,
FString SetObj
);
Parameter | Type | Required | Description |
---|---|---|---|
UUIDMetadataID | FString | Optional | The user ID to add/update the memberships. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
SetObj | FString | Optional | The JSON object that defines the add/update to perform. Cannot be "" . |
API limits
To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString UUIDMetadataID = TEXT("user123"); // Example User ID
FString Include = ""; // No additional attributes
FString SetObj = TEXT("{\"channels\": [{\"channel123\": {\"name\":\"Channel One\"}}]}"); // Example JSON object
// Call the SetMemberships method
PubnubSubsystem->SetMemberships(UUIDMetadataID, Include, SetObj);
API limits
To learn about the maximum length of parameters used to set channel membership metadata, refer to REST API docs.
Returns
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
show all 38 linesRemove Channel Memberships
Remove channel memberships for a user.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveMemberships(
FString UUIDMetadataID,
FString Include,
FString RemoveObj
);
Parameter | Type | Required | Description |
---|---|---|---|
UUIDMetadataID | FString | Optional | The user ID to remove the memberships. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
RemoveObj | FString | Optional | The JSON object with the memberships to remove. Cannot be "" . |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString UUIDMetadataID = TEXT("user123"); // Example User ID
FString Include = ""; // No additional attributes
FString RemoveObj = TEXT("{\"channels\": [{\"channel123\": {\"name\":\"Channel One\"}}]}"); // Example JSON object
// Call the RemoveMemberships method
PubnubSubsystem->RemoveMemberships(UUIDMetadataID, Include, RemoveObj);
Returns
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": "",
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
show all 38 linesChannel Members
Get Channel Members
The method returns a list of members in a channel. The list will include user metadata for members that have additional metadata stored in the database.
Method(s)
- Blueprint
- C++
PubnubSubsystem->GetChannelMembers(
FString ChannelMetadataID,
FString Include,
int Limit,
FString Start,
FString End,
EPubnubTribool Count,
FOnPubnubResponse OnGetMembersResponse
);
Parameter | Type | Required | Description |
---|---|---|---|
ChannelMetadataID | FString | Optional | The metadata ID for which to retrieve the channel object. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex user attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
Limit | int | Optional | Number of objects to return in response. Available values: 1 - 100 . If you set 0 , the default value of 100 is used. |
Start | FString | Optional | Previously-returned cursor bookmark for fetching the next page. Use "" if you don’t want to paginate with a start bookmark. |
End | FString | Optional | Previously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter. Use "" if you don’t want to paginate with an end bookmark. |
Count | EPubnubTribool enum | Yes | Total request count to be included in paginated response. By default, the total count is omitted. Available values:
|
OnGetMembersResponse | FOnPubnubResponse | Yes | The callback function used to handle the result. |
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
// Create a pubnub response delegate
// you MUST implement your own callback function to handle the response
FOnPubnubResponse OnGetMembersResponse;
OnGetMembersResponse.BindDynamic(this, &AMyActor::OnGetMembersResponse);
FString ChannelMetadataID = "my-channel";
FString Include = ""; // No additional attributes
int Limit = 10; // Limit to 10 objects
FString Start = ""; // No pagination start bookmark
show all 19 linesReturns
{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
show all 39 linesSet Channel Members
This method sets members in a channel.
Method(s)
- Blueprint
- C++
PubnubSubsystem->SetChannelMembers(
FString ChannelMetadataID,
FString Include,
FString SetObj
);
Parameter | Type | Required | Description |
---|---|---|---|
ChannelMetadataID | FString | Optional | The channel ID to add/update the members. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
SetObj | FString | Optional | The JSON object that defines the add/update to perform. Cannot be "" . |
API limits
To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelMetadataID = "myChannel";
FString Include = ""; // No additional attributes
FString SetObj = TEXT([{"id": "some-user-id", "custom": {"starred": true}}, {"id": "user-0-id", "some_key": {"other_key": "other_value"}}]); // Example JSON object
// Call the SetChannelMembers method
PubnubSubsystem->SetChannelMembers(ChannelMetadataID, Include, SetObj);
API limits
To learn about the maximum length of parameters used to set channel members metadata, refer to REST API docs.
Returns
{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
show all 39 linesRemove Channel Members
Remove members from a channel.
Method(s)
- Blueprint
- C++
PubnubSubsystem->RemoveChannelMembers(
FString ChannelMetadataID,
FString Include,
FString RemoveObj
);
Parameter | Type | Required | Description |
---|---|---|---|
ChannelMetadataID | FString | Optional | The channel ID to remove the members. Cannot be "" . |
Include | FString | Optional | A comma delimited string with additional/complex channel attributes to include in response. Use "" if you don't want to retrieve additional attributes. |
RemoveObj | FString | Optional | The JSON object that defines what to remove. Cannot be "" . |
API limits
To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.
Basic Usage
#include "Kismet/GameplayStatics.h"
#include "PubnubSubsystem.h"
UGameInstance* GameInstance = UGameplayStatics::GetGameInstance(this);
UPubnubSubsystem* PubnubSubsystem = GameInstance->GetSubsystem<UPubnubSubsystem>();
FString ChannelMetadataID = "myChannel";
FString Include = ""; // No additional attributes
FString RemoveObj = TEXT([{"id": "some-user-id", "custom": {"starred": true}}, {"id": "user-0-id", "some_key": {"other_key": "other_value"}}]); // Example JSON object
// Call the RemoveChannelMembers method
PubnubSubsystem->RemoveChannelMembers(ChannelMetadataID, Include, RemoveObj);
Returns
{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "john.doe@pubnub.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": "",
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
show all 39 lines