App Context API for Ruby 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 changed: set, updated, or removed from the database. At the same time, making a request to set the same data that already exist, doesn't trigger any event. 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)

To Get All UUID Metadata you can use the following method(s) in the Ruby SDK:

get_all_uuid_metadata(
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many UUID has been associated with metadata.
  • custom - include field with additional information from metadata which has been used during UUID metadata set requests.
  • type - include the type of the metadata.
  • status - include the status of the metadata.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.get_all_uuid_metadata(
limit: 5,
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:metadata => [
{
:id => "mg",
:name => "magnum",
:externalId => nil,
:profileUrl => nil,
:email => nil,
:custom => { "XXX" => "YYYY" },
:updated => <Date>,
:eTag => "Ad2eyIWXwJzBqAE"
}
],
show all 24 lines

Get User Metadata

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 Ruby SDK:

get_uuid_metadata(
uuid: uuid,
include: include,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
uuid
Type: String
Default:
Client UUID
Identifier for which associated metadata should be fetched. Default: configured PubNub client uuid.
include
Type: Object
Default:
{ custom: true }
Additional information which should be included in response. Available options:
  • custom - include field with additional information from metadata which has been used during UUID metadata set requests.
  • type - include the type of the metadata.
  • status - include the status of the metadata.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.get_uuid_metadata(include: { custom: true }) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:id => "mg",
:name => "magnum",
:externalId => nil,
:profileUrl => nil,
:email => nil,
:custom => { "XXX" => "YYYY" },
:updated => <Date>,
:eTag => "Ad2eyIWXwJzBqAE"
}
},
@status = {
:code => 200
show all 17 lines

Set User Metadata

Unsupported partial updates of custom metadata

The value of the custom metadata parameter sent in this method always overwrites the value stored on PubNub servers. If you want to add new custom data to an existing one, you must:

  1. Get the existing metadata and store it locally.
  2. Append the new custom metadata to the existing one.
  3. Set the entire updated custom object.

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 Ruby SDK:

set_uuid_metadata(
uuid: uuid,
metadata: metadata,
include: include,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
uuid
Type: String
Default:
Client UUID
Identifier with which new metadata should be associated. Default: configured PubNub client uuid.
metadata *
Type: Object
Default:
n/a
Metadata information which should be associated with UUID. Available options:
  • name - Name which should be stored in metadata associated with specified UUID.
  • externalId - External identifier (database, auth service) associated with specified UUID.
  • profileUrl - External URL with information for specified UUID representation.
  • custom - Additional information which should be stored in metadata associated with specified UUID. App Context filtering language doesn’t support filtering by custom properties.
  • email - Email address which should be stored in metadata associated with specified UUID.
  • type - Type of the metadata associated with specified UUID.
  • status - Status of the metadata associated with specified UUID.
include
Type: Object
Default:
{ custom: true }
Additional information which should be included in response. Available options:
  • custom - include field with additional information from metadata which has been used during UUID metadata set requests.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).
API limits

To learn about the maximum length of parameters used to set user metadata, refer to REST API docs.

Basic Usage

pubnub.set_uuid_metadata(
uuid: 'mg',
metadata: { name: 'magnum', custom: { XXX: 'YYYY' } },
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:id => "mg",
:name => "magnum",
:externalId => nil,
:profileUrl => nil,
:email => nil,
:custom => { "XXX" => "YYYY" },
:updated => <Date>,
:eTag => "Ad2eyIWXwJzBqAE"
}
},
@status = {
:code => 200
show all 17 lines

Remove User Metadata

Removes the metadata from a specified UUID.

Method(s)

To Remove UUID Metadata you can use the following method(s) in the Ruby SDK:

remove_uuid_metadata(
uuid: uuid,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
uuid
Type: String
Default:
Client UUID
Identifier for which associated metadata should be removed. Default: configured PubNub client uuid.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.remove_uuid_metadata(uuid: 'mg') do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@status = {
:code => 200,
:operation => :remove_uuid_metadata,
:category => :ack,
:error => false,
# [...]
},
# [...]
>

Channel

Get Metadata for All Channels

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 Ruby SDK:

get_all_channels_metadata(
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many channels has been associated with metadata.
  • custom - include field with additional information from metadata which has been used during channel metadata set requests.
  • type - include the type of the metadata.
  • status - include the status of the metadata.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.get_all_channels_metadata(
limit: 5,
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:metadata => [
{
:id => "rb_channel1",
:name => "some_name",
:description => nil,
:custom => { "XXX" => "YYYY" },
:updated => <Date>,
:eTag => "AZTUtcvx6NDGLQ"
},
# {...}
],
:totalCount => 2,
show all 23 lines

Get Channel Metadata

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 Ruby SDK:

get_channel_metadata(
channel: channel,
include: include,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
channel *
Type: String
Default:
n/a
Name of channel for which associated metadata should be fetched.
include
Type: Object
Default:
{ custom: true }
Additional information which should be included in response. Available options:
  • custom - include field with additional information from metadata which has been used during channel metadata set requests.
  • type - include the type of the metadata.
  • status - include the status of the metadata.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.get_channel_metadata(
channel: 'channel',
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:id => "channel",
:name => "some_name",
:description => nil,
:custom => { "XXX" => "YYYY" },
:updated => <Date>,
:eTag => "AZTUtcvx6NDGLQ"
}
},
@status = {
:code => 200
}
>

Set Channel Metadata

Unsupported partial updates of custom metadata

The value of the custom metadata parameter sent in this method always overwrites the value stored on PubNub servers. If you want to add new custom data to an existing one, you must:

  1. Get the existing metadata and store it locally.
  2. Append the new custom metadata to the existing one.
  3. Set the entire updated custom object.

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 Ruby SDK:

set_channel_metadata(
channel: channel,
metadata: metadata,
include: include,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
channel *
Type: String
Default:
n/a
Name of channel with which new metadata should be associated.
metadata *
Type: Object
Default:
n/a
Metadata information which should be associated with channel. Available options:
  • name - Name which should stored in metadata associated with specified channel.
  • information - Description which should be stored in metadata associated with specified channel.
  • custom - Additional information which should be stored in metadata associated with specified channel. App Context filtering language doesn’t support filtering by custom properties.
  • type - Type of the metadata associated with specified channel.
  • status - Status of the metadata associated with specified channel.
include
Type: Object
Default:
{ custom: true }
Additional information which should be included in response. Available options:
  • custom - include field with additional information from metadata which has been used during UUID metadata set requests.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).
API limits

To learn about the maximum length of parameters used to set channel metadata, refer to REST API docs.

Basic Usage

pubnub.set_channel_metadata(
channel: 'channel',
metadata: { name: 'some_name', custom: { XXX: 'YYYY' } }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:id => "channel",
:name => "some_name",
:description => nil,
:custom => { "XXX" => "YYYY" },
:updated => <Date>,
:eTag => "AZTUtcvx6NDGLQ"
}
},
@status = {
:code => 200
}
>

Other Examples

Iteratively update existing metadata
require 'pubnub'
require 'json'

pubnub = Pubnub.new(
publish_key: 'demo',
subscribe_key: 'demo',
uuid: 'example'
)

channel = 'demo_example'
help_string = <<-HELP
To exit type '/exit'
To show the current object type '/show'
To show this help type '/help'
HELP
show all 89 lines

Remove Channel Metadata

Removes the metadata from a specified channel.

Method(s)

To Remove Channel Metadata you can use the following method(s) in the Ruby SDK:

remove_channel_metadata(
channel: channel,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
channel *
Type: String
Default:
n/a
Name of channel with which the metadata should be removed.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.remove_channel_metadata(channel: 'channel') do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@status = {
:code => 200,
:operation => :remove_channel_metadata,
:category => :ack,
:error => false,
# [...]
},
# [...]
>

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)

To Get Memberships you can use the following method(s) in the Ruby SDK:

get_memberships(
uuid: uuid,
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
uuid
Type: String
Default:
Client UUID
Identifier for which memberships in channels should be fetched. Default: configured PubNub client uuid.
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many memberships UUID has.
  • custom - include field with additional information from metadata which has been associated with UUID during membership add requests.
  • channel_metadata - include channel's metadata into response (not only name).
  • channel_custom - include channel's additional information which has been used during channel metadata set requests.
  • status - include the status of the membership.
  • type - include the type of the membership.
  • channel_type - include the type of the channel.
  • channel_status - include the status of the channel.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.get_memberships(
uuid: 'mg',
include: { count: true, custom: true, channel_metadata: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:memberships => [
{
:channel => {
:id => "channel-identifier1",
:name => "Channel1",
:description => nil,
# {...}
},
:custom => { "membership-custom" => "custom-data-1" },
:updated => <Date>,
:eTag => "AYbepevg39XeDA"
},
show all 26 lines

Set Channel Memberships

Set channel memberships for a UUID.

Method(s)

To Set Memberships you can use the following method(s) in the Ruby SDK:

set_memberships(
uuid: uuid,
channels: channels,
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
uuid
Type: String
Default:
Client UUID
Identifier for which memberships in channels should be set. Default: configured PubNub client uuid.
channels *
Type: Array
Default:
n/a
List of channels for which metadata associated with each of them in context of UUID should be set. Each entry is a dictionary with channel and optional fields:
  • custom - A dictionary with simple objects: String and Integer.
  • type - Type of the metadata associated with specified membership.
  • status - Status of the metadata associated with specified membership.
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many memberships UUID has.
  • custom - include field with additional information from metadata which has been associated with UUID during membership add requests.
  • channel_metadata - include channel's metadata into response (not only name).
  • channel_custom - include channel's additional information which has been used during channel metadata set requests.
  • status - include the status of the membership.
  • type - include the type of the membership.
  • channel_type - include the type of the channel.
  • channel_status - include the status of the channel.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).
API limits

To learn about the maximum length of parameters used to set channel membership metadata, refer to REST API docs.

Basic Usage

pubnub.set_memberships(
uuid: 'mg',
channels: [
{ channel: 'channel-1' }
],
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:memberships => [
{
:channel => {
:id => "channel-1",
# {...}
},
:custom => nil,
:updated => <Date>,
:eTag => "AY39mJKK//C0VA"
}
],
:totalCount => 1,
show all 23 lines

Remove Channel Memberships

Remove channel memberships for a UUID.

Method(s)

To Remove Memberships you can use the following method(s) in the Ruby SDK:

remove_memberships(
uuid: uuid,
channels: channels,
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
uuid
Type: String
Default:
Client UUID
Identifier for which memberships in channels should be removed. Default: configured PubNub client uuid.
channels *
Type: Array
Default:
n/a
List of channels from which UUID should be removed as member.
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many memberships UUID has.
  • custom - include field with additional information from metadata which has been associated with UUID during membership add requests.
  • channel_metadata - include channel's metadata into response (not only name).
  • channel_custom - include channel's additional information which has been used during channel metadata set requests..
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.remove_memberships(
uuid: 'mg',
channels: [ 'channel-1' ],
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:memberships => [
{
:channel => {
:id => "channel-2",
# {...}
},
:custom => nil,
:updated => <Date>,
:eTag => "AY39mJKK//C0VA"
}
],
:totalCount => 1,
show all 23 lines

Channel 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)

To Get Channel Members you can use the following method(s) in the Ruby SDK:

get_channel_members(
channel: channel,
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
channel *
Type: String
Default:
n/a
Name of channel from which members should be fetched.
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many members channel has.
  • custom - include field with additional information from metadata which has been associated with UUID during channel member add requests.
  • uuid_metadata - include UUID's metadata into response (not only identifier).
  • uuid_custom - include UUID's additional information which has been used during UUID metadata set requests.
  • status - include the status of the member.
  • type - include the type of the member.
  • uuid_status - include the status of the UUID.
  • uuid_type - include the type of the UUID.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.get_channel_members(
channel: 'channel-1',
include: { count: true, custom: true, uuid_metadata: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:members => [
{
:uuid => {
:id => "uuid-identifier1",
:name => "uuid1",
:externalId => nil,
:profileUrl => nil,
:email => nil,
:updated => <Date>,
:eTag => "AYfwuq+u+4C01gE",
# {...}
},
show all 30 lines

Set Channel Members

This method sets members in a channel.

Method(s)

To Set Channel Members you can use the following method(s) in the Ruby SDK:

set_channel_members(
channel: channel,
uuids: uuids,
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
channel *
Type: String
Default:
n/a
Name of channel for which members should be set.
uuids *
Type: Array
Default:
n/a
List of UUIDs for which metadata associated with each of them in context of channel should be set. Each entry is a dictionary with UUID and optional fields:
  • custom - A dictionary with simple objects: String and Integer.
  • type - Type of the metadata associated with specified UUID.
  • status - Status of the metadata associated with specified UUID.
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many members channel has.
  • custom - include field with additional information from metadata which has been associated with UUID during channel member add requests.
  • uuid_metadata - include UUID's metadata into response (not only identifier).
  • uuid_custom - include UUID's additional information which has been used during UUID metadata set requests.
  • status - include the status of the member.
  • type - include the type of the member.
  • uuid_status - include the status of the UUID.
  • uuid_type - include the type of the UUID.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).
API limits

To learn about the maximum length of parameters used to set channel members metadata, refer to REST API docs.

Basic Usage

pubnub.set_channel_members(
channel: 'channel',
uuids: [
{ uuid: 'uuid1' }
],
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:members=>[
{
:uuid => {
:id => "mg2",
# {...}
},
:custom => nil,
:updated=><Date>,
:eTag => "AY39mJKK//C0VA"
}
],
:totalCount => 1,
show all 23 lines

Remove Channel Members

Remove members from a Channel.

Method(s)

To Remove Channel Members you can use the following method(s) in the Ruby SDK:

remove_channel_members(
channel: channel,
uuids: uuids,
sort: sort,
include: include,
filter: filter,
start: start,
end: end,
limit: limit,
http_sync: http_sync,
callback: callback
)
* required
ParameterDescription
channel *
Type: String
Default:
n/a
Name of channel from which members should be removed.
uuids *
Type: Array
Default:
n/a
List of UUIDs which should be removed from channel's list.
sort
Type: Array
Default:
n/a
List of criteria (name of field) which should be used for sorting in ascending order. Available options are id, name, and updated. Use asc or desc to specify sort direction.
include
Type: Object
Default:
{ count: true }
Additional information which should be included in response. Available options:
  • count - include how many members channel has.
  • custom - include field with additional information from metadata which has been associated with UUID during channel member add requests.
  • uuid_metadata - include UUID's metadata into response (not only identifier).
  • uuid_custom - include UUID's additional information which has been used during UUID metadata set requests.
filter
Type: String
Default:
n/a
Expression to filter out results basing on specified criteria. For more details on the supported grammar, check here
start
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for forward pagination, it fetches the next page, allowing you to continue from where you left off.
end
Type: String
Default:
n/a
Random string returned from the server, indicating a specific position in a data set. Used for backward pagination, it fetches the previous page, enabling access to earlier data. Ignored if the start parameter is supplied.
limit
Type: Integer
Default:
100
Number of objects to return in response. Default is 100, which is also the maximum value.
http_sync
Type: Boolean
Default:
false
Method will be executed asynchronously and will return future, to get its value you can use value method. If set to true, method will return array of envelopes (even if there's only one envelope). For sync methods Envelope object will be returned.
callback
Type: Lambda accepting one parameter
Default:
n/a
Callback that will be called for each envelope. For async methods future will be returned, to retrieve value Envelope object you have to call value method (thread will be locked until the value is returned).

Basic Usage

pubnub.remove_channel_members(
channel: 'channel',
uuids: [ 'mg1' ],
include: { custom: true }
) do |envelope|
puts envelope
end

Response

#<Pubnub::Envelope
@result = {
:data => {
:members=>[
{
:uuid => {
:id => "uuid-identifier",
# {...}
},
:custom => nil,
:updated => <Date>,
:eTag => "AY39mJKK//C0VA"
}
],
:totalCount => 1,
show all 23 lines
Last updated on