Metadata API for PubNub C# SDK
This page describes the new Objects v2. To upgrade from Objects v1, refer to the migration guide.
Objects provides easy-to-use, serverless storage for user and channel data you need to build innovative, reliable, scalable applications. Use Objects 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
Description
Returns a paginated list of UUID Metadata objects, optionally including the custom data object for each.
Method(s)
To Get All UUID Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.GetAllUuidMetadata().IncludeCustom(bool).IncludeCount(bool).Page(PNPageObject).Sort(List<string>).Filter(string).Limit(int)
Parameter Type Required Description IncludeCustom
bool Optional Whether to fetch Custom
fields or not.IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. Limit
int Optional Number of objects to return in response. Default is 100
, which is also the maximum value.
Basic Usage
PNResult<PNGetAllUuidMetadataResult> getAllUuidMetadataResponse = await pubnub.GetAllUuidMetadata()
.IncludeCustom(true)
.IncludeCount(true)
.ExecuteAsync();
PNGetAllUuidMetadataResult getAllUuidMetadataResult = getAllUuidMetadataResponse.Result;
PNStatus status = getAllUuidMetadataResponse.Status;
Response
{
"Uuids": [
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": null,
"ProfileUrl": null,
"Custom": null,
"Updated": "2020-06-17T16:28:14.060718Z"
},
{
"Uuid": "uuid-2",
"Name": "Bob Cat",
"Email": "bobc@example.com",
"ExternalId": null,
"ProfileUrl": null,
"Custom": {
"phone": "999-999-9999"
},
"Updated": "2020-06-17T16:42:22.906768Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MTI",
"Prev": ""
}
}
Get User Metadata
Description
Returns metadata for the specified UUID, optionally including the custom data object for each.
Method(s)
To Get UUID Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.GetUuidMetadata().Uuid(string).IncludeCustom(bool)
Parameter Type Required Description Uuid
string Yes Unique user identifier. If not supplied then current user's Uuid
is used.IncludeCustom
bool Optional Whether to fetch Custom
fields or not.
Basic Usage
// Get Metadata for UUID set in the pubnub instance
PNResult<PNGetUuidMetadataResult> getUuidMetadataResponse = await pubnub.GetUuidMetadata()
.ExecuteAsync();
PNGetUuidMetadataResult getUuidMetadataResult = getUuidMetadataResponse.Result;
PNStatus status = getUuidMetadataResponse.Status;
// Get Metadata for a specific UUID
PNResult<PNGetUuidMetadataResult> getUuidMetadataResponse = await pubnub.GetUuidMetadata()
.Uuid("my-uuid")
.ExecuteAsync();
PNGetUuidMetadataResult getUuidMetadataResult = getUuidMetadataResponse.Result;
PNStatus status = getUuidMetadataResponse.Status;
Response
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": null,
"ProfileUrl": null,
"Custom": null,
"Updated": "2020-06-17T16:28:14.060718Z"
}
Set User Metadata
Description
Set metadata for a UUID in the database, optionally including the custom data object for each.
Method(s)
To Set UUID Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.SetUuidMetadata().Uuid(string).Name(string).Email(string).ExternalId(string).ProfileUrl(string).Custom(Dictionary<string, object>).IncludeCustom(bool)
Parameter Type Required Description Uuid
string Yes Unique user identifier. If not supplied then current user's Uuid
is used.Name
string Yes Display name for the user. Maximum 200 characters. Email
string Optional The user's email address. Maximum 80 characters. ExternalId
string Optional User's identifier in an external system. ProfileUrl
string Optional The URL of the user's profile picture. Custom
Dictionary<string, object> Optional JSON object of key-value pairs with supported data types. Objects filtering language doesn’t support filtering by custom properties. IncludeCustom
bool Optional Whether to fetch Custom
fields or not.
Basic Usage
// Set Metadata for UUID set in the pubnub instance
PNResult<PNSetUuidMetadataResult> setUuidMetadataResponse = await pubnub.SetUuidMetadata()
.Uuid(config.Uuid)
.Name("John Doe")
.Email("john.doe@user.com")
.ExecuteAsync();
PNSetUuidMetadataResult setUuidMetadataResult = setUuidMetadataResponse.Result;
PNStatus status = setUuidMetadataResponse.Status;
Response
{
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": null,
"ProfileUrl": null,
"Custom": null,
"Updated": "2020-06-17T16:28:14.060718Z"
}
Remove User Metadata
Description
Removes the metadata from a specified UUID.
Method(s)
To Remove UUID Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.RemoveUuidMetadata().Uuid(string)
Parameter Type Required Description Uuid
string Yes Unique user identifier. If not supplied then current user's Uuid
is used.
Basic Usage
// Remove Metadata for UUID set in the pubnub instance
PNResult<PNRemoveUuidMetadataResult> removeUuidMetadataResponse = await pubnub.RemoveUuidMetadata()
.ExecuteAsync();
PNRemoveUuidMetadataResult removeUuidMetadataResult = removeUuidMetadataResponse.Result;
PNStatus status = removeUuidMetadataResponse.Status;
Response
{}
Channel
Get Metadata for All Channels
Description
Returns a paginated list of Channel Metadata objects, optionally including the custom data object for each.
Method(s)
To Get All Channel Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.GetAllChannelMetadata().IncludeCustom(bool).IncludeCount(bool).Page(PNPageObject).Sort(List<string>).Filter(string)
Parameter Type Required Description IncludeCustom
bool Optional Whether to fetch Custom
fields or not.IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here.
Basic Usage
PNResult<PNGetAllChannelMetadataResult> getAllChannelMetadataResponse = await pubnub.GetAllChannelMetadata()
.IncludeCount(true)
.IncludeCustom(true)
.ExecuteAsync();
PNGetAllChannelMetadataResult getAllChannelMetadataResult = getAllChannelMetadataResponse.Result;
PNStatus status2 = getAllChannelMetadataResponse.Status;
Response
{
"Channels": [
{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"Updated": "2020-06-17T16:52:19.562469Z"
},
{
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
"motd": "Always check your spelling!"
},
"Updated": "2020-06-17T16:52:19.562469Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MTE",
"Prev": ""
}
}
Get Channel Metadata
Description
Returns metadata for the specified Channel, optionally including the custom data object for each.
Method(s)
To Get Channel Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.GetChannelMetadata().Channel(string).IncludeCustom(bool)
Parameter Type Required Description Channel
string Yes Channel name. IncludeCustom
bool Optional Whether to fetch Custom
fields or not.
Basic Usage
// Get Metadata for a specific channel
PNResult<PNGetChannelMetadataResult> getChannelMetadataResponse = await pubnub.GetChannelMetadata()
.Channel("my-channel")
.IncludeCustom(true)
.ExecuteAsync();
PNGetChannelMetadataResult getChannelMetadataResult = getChannelMetadataResponse.Result;
PNStatus status = getChannelMetadataResponse.Status;
Response
{
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"Updated": "2020-06-17T16:52:19.562469Z"
}
Set Channel Metadata
Description
Set metadata for a Channel in the database, optionally including the custom data object for each.
Method(s)
To Set Channel Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.SetChannelMetadata().Channel(string).Name(string).Description(string).Custom(Dictionary<string, object>).IncludeCustom(bool)
Parameter Type Required Description Channel
string Yes Channel name. Name
string Optional Name of a channel. Description
string Optional Description of a channel. Custom
Dictionary<string, object> Optional Include respective additional fields in the response. Objects filtering language doesn’t support filtering by custom properties. IncludeCustom
bool Optional Whether to fetch custom
fields or not.
Basic Usage
// Set Metadata for a specific channel
PNResult<PNSetChannelMetadataResult> setChannelMetadataResponse = await pubnub.SetChannelMetadata()
.Channel("my-channel")
.Name("John Doe")
.Description("sample description")
.Custom(new Dictionary<string, object>() { { "color", "blue" } })
.IncludeCustom(true)
.ExecuteAsync();
PNSetChannelMetadataResult setChannelMetadataResult = setChannelMetadataResponse.Result;
PNStatus status = setChannelMetadataResponse.Status;
Response
{
"Channel": "my-channel",
"Name": "John Doe",
"Description": "sample description",
"Custom": {
"color": "blue"
},
"Updated": "2020-06-17T16:52:19.562469Z"
}
Remove Channel Metadata
Description
Removes the metadata from a specified channel.
Method(s)
To Remove Channel Metadata
you can use the following method(s) in the C# V4 SDK:
pubnub.RemoveChannelMetadata().Channel(string)
Parameter Type Required Description Channel
string Yes Channel name.
Basic Usage
// Delete Metadata for a specific channel
PNResult<PNRemoveChannelMetadataResult> removeChannelMetadataResponse = await pubnub.RemoveChannelMetadata()
.Channel("mychannel")
.ExecuteAsync();
PNRemoveChannelMetadataResult removeChannelMetadataResult = removeChannelMetadataResponse.Result;
PNStatus status = removeChannelMetadataResponse.Status;
Response
{}
Channel Memberships
Get Channel Memberships
Description
The method returns a list of channel memberships for a user. This method doesn't return a user's subscriptions.
Method(s)
To Get Memberships
you can use the following method(s) in the C# V4 SDK:
pubnub.GetMemberships().Uuid(string).Include(PNMembershipField[]).IncludeCount(bool).Page(PNPageObject)
Parameter Type Required Description Uuid
string Yes Unique user identifier. If not supplied then current user's Uuid
is used.Include
PNMembershipField[] Optional Include respective additional fields in the response. IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination.
Basic Usage
PNResult<PNGetMembershipsResult> getMembershipsResponse = await pubnub.GetMemberships()
.Uuid("my-uuid")
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.Page(new PNPageObject() { Next = "", Prev = "" })
.ExecuteAsync();
PNGetMembershipsResult getMembeshipsResult = getMembershipsResponse.Result;
PNStatus status = getMembershipsResponse.Status;
Response
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"ChannelMetadata": {
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
"motd": "Always check your spelling!"
},
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"item": "book"
},
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Set Channel Memberships
Description
Set channel memberships for a UUID.
Method(s)
To Set Memberships
you can use the following method(s) in the C# V4 SDK:
pubnub.SetMemberships().Uuid(string).Channels(List<PNMembership>).Include(PNMembershipField[]).IncludeCount(bool).Page(PNPageObject).Sort(List<string>).Filter(string).Limit(int)
Parameter Type Required Description Uuid
string Yes Unique user identifier. If not supplied then current user's Uuid
is used.Channels
List Yes List of Channels
to add to membership. List can contain strings (channel-name only) or objects (which can include custom data).Include
PNMembershipField[] Optional Include respective additional fields in the response. IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. Limit
int Optional Number of objects to return in response. Default is 100
, which is also the maximum value.
Basic Usage
List<PNMembership> setMembershipChannelMetadataIdList = new List<PNMembership>();
if (!string.IsNullOrEmpty(seMembershipChannelMetaId))
{
setMembershipChannelMetadataIdList.Add(new PNMembership() { Channel = "my-channel", Custom = new Dictionary<string, object>() { { "item", "book" } } });
}
PNResult<PNMembershipsResult> setMembershipsResponse = await pubnub.SetMemberships()
.Uuid("my-uuid")
.Channels(setMembershipChannelMetadataIdList)
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();
PNMembershipsResult setMembershipsResult = setMembershipsResponse.Result;
PNStatus status = setMembershipsResponse.Status;
Response
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"ChannelMetadata": {
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
"motd": "Always check your spelling!"
},
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"item": "book"
},
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Remove Channel Memberships
Description
Remove channel memberships for a UUID.
Method(s)
To Remove Memberships
you can use the following method(s) in the C# V4 SDK:
pubnub.RemoveMemberships().Uuid(string).Channels(List<string>).Include(PNMembershipField[]).IncludeCount(bool).Page(PNPageObject).Sort(List<string>).Filter(string).Limit(int)
Parameter Type Required Description Uuid
String Optional Unique user identifier. If not supplied then current user's Uuid
is used.Channels
List Yes Channels to remove from membership. Include
PNMembershipField[] Optional Include respective additional fields in the response. IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. Limit
int Optional Number of objects to return in response. Default is 100
, which is also the maximum value.
Basic Usage
List<string> removeMembershipList = new List<string>();
if (!string.IsNullOrEmpty(removeMembershipChannelMetaId))
{
removeMembershipList.Add("my-channel");
removeMembershipList.Add("your-channel");
}
PNResult<PNMembershipsResult> removeMembershipsResponse = await pubnub.RemoveMemberships()
.Uuid("uuid")
.Channels(removeMembershipList)
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();
PNMembershipsResult removeMembershipsResult = removeMembershipsResponse.Result;
PNStatus status2 = removeMembershipsResponse.Status;
Response
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"ChannelMetadata": {
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
"motd": "Always check your spelling!"
},
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"item": "book"
},
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Manage Channel Memberships
Description
The method Set and Remove channel memberships for a user.
Method(s)
To Manage Memberships
you can use the following method(s) in the C# V4 SDK:
pubnub.ManageMemberships().Uuid(string).Set(List<PNMembership>).Remove(List<string>).Include(PNMembershipField[]).IncludeCount(bool).Page(PNPageObject).Sort(List<string>)
Parameter Type Required Description Uuid
string Yes Unique user identifier. If not supplied then current user's Uuid
is used.Set
List Optional Set channel memberships for the user. Remove
List Optional Remove channel memberships for the user. Include
PNMembershipField[] Optional Include respective additional fields in the response. IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Basic Usage
List<PNMembership> setMembrshipList = new List<PNMembership>();
setMembrshipList.Add(new PNMembership() { Channel = "ch1", Custom = new Dictionary<string, object>() { { "say","hello" } } });
setMembrshipList.Add(new PNMembership() { Channel = "ch2", Custom = new Dictionary<string, object>() { { "say", "world" } } });
setMembrshipList.Add(new PNMembership() { Channel = "ch3", Custom = new Dictionary<string, object>() { { "say", "bye" } } });
List<string> removeMembrshipList = new List<string>();
removeMembrshipList.Add("ch4");
PNResult<PNManageMembershipsResult> manageMmbrshipsResponse = await pubnub.ManageMemberships()
.Uuid("my-uuid")
.Set(setMembrshipList)
.Remove(removeMembrshipList)
.Include(new PNMembershipField[] { PNMembershipField.CUSTOM, PNMembershipField.CHANNEL, PNMembershipField.CHANNEL_CUSTOM })
.IncludeCount(true)
.Page(new PNPageObject() { Next = "", Prev = "" })
.Sort(new List<string>() { "channel.id:asc" })
.ExecuteAsync();
PNManageMembershipsResult manageMmbrshipsResult = manageMmbrshipsResponse.Result;
PNStatus status = manageMmbrshipsResponse.Status;
Response
{
"Memberships": [
{
"ChannelMetadata": {
"Channel": "my-channel",
"Name": "My channel",
"Description": "A channel that is mine",
"Custom": null,
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"starred": false
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"ChannelMetadata": {
"Channel": "main",
"Name": "Main channel",
"Description": "The main channel",
"Custom": {
"public": true,
"motd": "Always check your spelling!"
},
"Updated": "2020-06-17T16:55:44.632042Z"
},
"Custom": {
"item": "book"
},
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Channel Members
Get Channel Members
Description
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)
To Get Channel Members
you can use the following method(s) in the C# V4 SDK:
pubnub.GetChannelMembers().Channel(string).Include(PNChannelMemberField[]).IncludeCount(bool).Page(PNPageObject).Sort(List<string>).Filter(string).Limit(int)
Parameter Type Required Description Channel
string Yes Channel name. Include
PNChannelMemberField[] Optional Include respective additional fields in the response. IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. Limit
int Optional Number of objects to return in response. Default is 100
, which is also the maximum value.
Basic Usage
// Get Members (uuids) for a specific channel
PNResult<PNChannelMembersResult> getChannelMembersResponse = await pubnub.GetChannelMembers()
.Channel("my-channel")
.Include(new PNChannelMemberField[] { PNChannelMemberField.CUSTOM, PNChannelMemberField.UUID, PNChannelMemberField.UUID_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();
PNChannelMembersResult getChannelMembersResult = getChannelMembersResponse.Result;
PNStatus status2 = getChannelMembersResponse.Status;
Response
{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": null,
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"UuidMetadata": {
"Uuid": "uuid-2",
"Name": "Bob Cat",
"Email": "bobc@example.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": {
"phone": "999-999-9999"
},
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": null,
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Set Channel Members
Description
This method sets members in a channel.
Method(s)
To Set Channel Members
you can use the following method(s) in the C# V4 SDK:
pubnub.SetChannelMembers().Channel(string).Uuids(List<PNChannelMember>).Include(PNChannelMemberField[]).Page(PNPageObject).Sort(List<string>).Filter(string).Limit(int)
Parameter Type Required Description Channel
String Yes Channel name. Uuids
List Yes List of members to add to the channel
. List can contain strings (Uuids only) or objects (which can include custom data).Include
PNChannelMemberField[] Optional Include respective additional fields in the response. Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. Limit
int Optional Number of objects to return in response. Default is 100
, which is also the maximum value.
Basic Usage
// Add Members (UUID) for a specific channel
List<PNChannelMember> setMemberChannelList = new List<PNChannelMember>();
if (!string.IsNullOrEmpty(setMemberChUuid))
{
setMemberChannelList.Add(new PNChannelMember() { Uuid = "my-uuid", Custom = new Dictionary<string, object>() { { "planet", "earth" } } });
}
PNResult<PNChannelMembersResult> setChannelMembersResponse = await pubnub.SetChannelMembers()
.Channel(setmemberChMetadataId)
.Uuids(setMemberChannelList)
.Include(new PNChannelMemberField[] { PNChannelMemberField.CUSTOM, PNChannelMemberField.UUID, PNChannelMemberField.UUID_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();
PNChannelMembersResult setChannelMembersResult = setChannelMembersResponse.Result;
PNStatus status2 = setChannelMembersResponse.Status;
Response
{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": null,
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"UuidMetadata": {
"Uuid": "uuid-2",
"Name": "Bob Cat",
"Email": "bobc@example.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": {
"phone": "999-999-9999"
},
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": null,
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Remove Channel Members
Description
Remove members from a Channel.
Method(s)
To Remove Channel Members
you can use the following method(s) in the C# V4 SDK:
pubnub.RemoveChannelMembers().Channel(string).Remove( List).Include(PNChannelMembersInclude[]).Limit(int).Count(bool).Start(string).End(string).Sort(List).Async()
Parameter Type Required Description Channel
string Yes Channel name. Uuids
List Yes Members to remove from channel. Include
PNChannelMemberField[] Optional Include respective additional fields in the response. IncludeCount
bool Optional Request IncludeCount
to be included in paginated response. By default,IncludeCount
is omitted.Page
PNPageObject Optional Use for pagination. Sort
List Optional List of properties to sort by. Available options are id
,name
, andupdated
. Useasc
ordesc
to specify sort direction. For example:{name: 'asc'}
Filter
string Optional Expression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. Limit
int Optional Number of objects to return in response. Default is 100
, which is also the maximum value.
Basic Usage
// Remove Members (UUID) for a specific channel
List<string> removeChannelMemberList = new List<string>();
removeChannelMemberList.Add("my-uuid");
removeChannelMemberList.Add("your-uuid");
PNResult<PNChannelMembersResult> removeChannelMembersResponse = await pubnub.RemoveChannelMembers()
.Channel("my-channel")
.Uuids(removeChannelMemberList)
.Include(new PNChannelMemberField[] { PNChannelMemberField.CUSTOM, PNChannelMemberField.UUID, PNChannelMemberField.UUID_CUSTOM })
.IncludeCount(true)
.ExecuteAsync();
PNChannelMembersResult removeChannelMembersResult = removeChannelMembersResponse.Result;
PNStatus status = removeChannelMembersResponse.Status;
Response
{
"ChannelMembers": [
{
"UuidMetadata": {
"Uuid": "uuid-1",
"Name": "John Doe",
"Email": "jack@twitter.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": null,
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": {
"role": "admin"
},
"Updated": "2020-06-17T17:05:25.987964Z"
},
{
"UuidMetadata": {
"Uuid": "uuid-2",
"Name": "Bob Cat",
"Email": "bobc@example.com",
"ExternalId": "",
"ProfileUrl": "",
"Custom": {
"phone": "999-999-9999"
},
"Updated": "2019-02-20T23:11:20.89375"
},
"Custom": null,
"Updated": "2020-06-17T17:05:25.987964Z"
}
],
"TotalCount": 2,
"Page": {
"Next": "MQ",
"Prev": ""
}
}
Objects Filtering Language Definition
The filtering language for Objects is similar to the stream filtering language.
Note the following:
Date/time properties, such as
updated
, must be compared to valid date/time strings formatted according to ISO 8601.The LIKE operator supports wildcards denoted by the
*
character. A wildcard matches any sequence of arbitrary Unicode characters, including the empty sequence. The literal asterisk is matched when escaped using the backslash (\
) character.Values used with LIKE must be properly encoded just like any other string value. Thus, in order to escape an asterisk, the raw value must contain
\\*
.The entire expression must be properly URL-encoded when used in the query string.
Custom property filtering
You can't filter by custom properties.
<expression> ::= <and_expression> ( "||" <and_expression> )*
<and_expression> ::= <binary_condition> ( "&&" <binary_condition> )*
<binary_condition> ::= "!" <binary_condition> | "(" <expression> ")" | <relational_condition>
<relational_condition> ::= <property_path> <relational_operator> <value>
<property_path> ::= <property_name> ( "." <property_name> )*
<property_name> ::= <identifier> | "[" <string> "]"
<value> ::= <string> | <number> | "true" | "false" | "null"
Tokens
<identifier> ::= <letter> | "$" | "_" ( <letter> | "$" | "_" | <digit> )*
<relational_operator> ::= "==" | "!=" | "<=" | ">=" | "<" | ">" | "LIKE"
<string> ::= <double_quote> ( "\" <double_quote> | "\" <special_char>
| "\" "u" <hex_digit> <hex_digit> <hex_digit> <hex_digit>
| <unicode_char> - <double_quote> - "\" )* <double_quote>
| "'" ( "\" "'" | "\" <special_char>
| "\" "u" <hex_digit> <hex_digit> <hex_digit> <hex_digit>
| <unicode_char> - "'" - "\" )* "'"
<number> ::= ( "+" | "-" )? ( <digit> )* ( "." )? <digit> ( <digit> )*
( "e" | "E" ( "+" | "-" )? <digit> ( <digit> )* )?
<letter> ::= Unicode Letter (category; any kind of letter from any language)
<digit> ::= "0" .. "9"
<hex_digit> ::= <digit> | "A" .. "F"
<double_quote> ::= the " character
<unicode_char> ::= any character in the Unicode range from U+0020 to U+10FFFF inclusive
<special_char> ::= "\" | "/" | "b" | "f" | "n" | "r" | "t"
Sample object filtering operations
The following date/time comparison returns results that were modified on or after August 31st, 2019 (UTC):
updated >= "2019-08-31T00:00:00Z"
The following wildcard expression returns results whose name starts with the letter X:
name LIKE 'X*'
The following escaped wildcard expression returns results whose name contains an asterisk:
name LIKE '*\\**'