Metadata API for PubNub Go 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 Go V4 SDK:

pn.GetAllUUIDMetadata().Include([]pubnub.PNUUIDMetadataIncludeCustom).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Filter(string).Execute()
ParameterTypeRequiredDescription
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
CountboolOptionalRequest Count to be included in paginated response. By default, Count is omitted.
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. In addition to custom attributes, the expressions can refer to attributes on associated entities one level deep (that is, the association and its target entities).
Include[]pubnub.PNUUIDMetadataIncludeOptionalList of additional/complex UUID attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values: pubnub.PNUUIDMetadataIncludeCustom

Basic Usage

incl := []pubnub.PNUUIDMetadataInclude{
pubnub.PNUUIDMetadataIncludeCustom,
}

res, status, err := pn.GetAllUUIDMetadata().Include(incl).Sort(sort).Limit(100).Count(true).Execute()

Response

The GetAllUUIDMetadata() operation returns a PNGetAllChannelMetadataResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNUUIDDetails of type PNUUID are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

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 Go V4 SDK:

pn.PNUUIDMetadataInclude().Include([]pubnub.PNUUIDMetadataIncludeCustom).Sort(sort).ID(string).Execute()
ParameterTypeRequiredDescription
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
IDstringYesUnique user identifier. If not supplied then current user's uuid is used.
Include[]pubnub.PNUUIDMetadataIncludeCustomOptionalList of additional/complex UUID attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNUUIDMetadataIncludeCustom

Basic Usage

id := "testuuid"
incl := []pubnub.PNUUIDMetadataInclude{
pubnub.PNUUIDMetadataIncludeCustom,
}
res, status, err := pn.GetUUIDMetadata().UUID(id).Include(incl).Execute()
fmt.Println(res, status, err)

Response

The GetUUIDMetadata() operation returns a PNGetUUIDMetadataResponse which contains the following parameters:

Property NameTypeDescription
DataPNUUIDDetails of type PNUUID are here

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 Go V4 SDK:

pn.SetUUIDMetadata().Include([]pubnub.PNUUIDMetadataIncludeCustom).Sort(sort).ID(id).Name(string).ExternalID(string).ProfileURL(string).Email(string).Custom(map[string]interface{}).Execute()
ParameterTypeRequiredDescription
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
IDstringYesUnique user identifier. If not supplied then current user's uuid is used.
NamestringYesDisplay name for the user. Maximum 200 characters.
ExternalIDstringOptionalUser's identifier in an external system
ProfileURLstringOptionalThe URL of the user's profile picture
EmailstringOptionalThe user's email address. Maximum 80 characters.
Custommap[string]interface{}OptionalJSON object of key-value pairs with supported data types. Objects filtering language doesn’t support filtering by custom properties.
Include[]pubnub.PNUUIDMetadataIncludeOptionalList of additional/complex UUID attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values: pubnub.PNUUIDMetadataIncludeCustom

Basic Usage

id := "testuuid"
name := "name"
extid := "extid"
purl := "profileurl"
email := "email"

custom := make(map[string]interface{})
custom["a"] = "b"
custom["c"] = "d"

incl := []pubnub.PNUUIDMetadataInclude{
pubnub.PNUUIDMetadataIncludeCustom,
}

res, status, err := pn.SetUUIDMetadata().Include(incl).UUID(id).Name(name).ExternalID(extid).ProfileURL(purl).Email(email).Custom(custom).Execute()
show all 16 lines

Response

The SetUUIDMetadata() operation returns a PNSetUUIDMetadataResponse which contains the following parameters:

Property NameTypeDescription
DataPNUUIDDetails of type PNUUID are here

PNUUID

Property NameTypeDescription
IDstringUnique user identifier. If not supplied then current user's uuid is used.
NamestringDisplay name for the user. Maximum 200 characters.
ExternalIDstringUser's identifier in an external system
ProfileURLstringThe URL of the user's profile picture
EmailstringThe user's email address. Maximum 80 characters.
Custommap[string]interfaceJSON object of key-value pairs with supported data types.
UpdatedstringLast updated date.
ETagstringThe ETag.

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 Go V4 SDK:

pn.RemoveUUIDMetadata().ID(string).Execute()
ParameterTypeRequiredDescription
IDstringYesUnique user identifier. If not supplied then current user's uuid is used.

Basic Usage

id := "testuuid"
res, status, err := pn.RemoveUUIDMetadata().UUID(id).Execute()
fmt.Println(res, status, err)

Response

The RemoveUUIDMetadata() operation returns a PNRemoveUUIDMetadataResponse which contains the following parameters:

Property NameTypeDescription
Datainterface{}Returns an empty interface.

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 Go V4 SDK:

pn.GetAllChannelMetadata().Include([]pubnub.PNChannelMetadataInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Filter(string).Execute()
ParameterTypeRequiredDescription
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
CountboolOptionalRequest Count to be included in paginated response. By default, Count is omitted.
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. In addition to custom attributes, the expressions can refer to attributes on associated entities one level deep (that is, the association and its target entities).
Include[]pubnub.PNChannelMetadataIncludeOptionalList of additional/complex space attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNChannelMetadataIncludeCustom

Basic Usage

incl := []pubnub.PNChannelMetadataInclude{
pubnub.PNChannelMetadataIncludeCustom,
}
res, status, err := pn.GetAllChannelMetadata().Include(incl).Sort(sort).Limit(100).Count(true).Execute()
fmt.Println(res, status, err)

Response

The GetAllChannelMetadata() operation returns a PNGetAllChannelMetadataResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNChannelDetails of type PNChannel are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

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 Go V4 SDK:

pn.GetChannelMetadata().Include([]pubnub.PNChannelMetadataInclude).Sort(sort).ID(string).Execute()
ParameterTypeRequiredDescription
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
IDstringYesUnique user identifier. If not supplied then current user's uuid is used.
Include[]pubnub.PNChannelMetadataIncludeOptionalList of additional/complex space attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNChannelMetadataIncludeCustom

Basic Usage

id := "testchannel"
incl := []pubnub.PNChannelMetadataInclude{
pubnub.PNChannelMetadataIncludeCustom,
}
res, status, err := pn.GetChannelMetadata().Include(incl).Channel(id).Execute()
fmt.Println(res, status, err)

Response

The GetChannelMetadata() operation returns a PNGetChannelMetadataResponse which contains the following parameters:

Property NameTypeDescription
DataPNChannelDetails of type PNChannel are here

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 Go V4 SDK:

pn.SetChannelMetadata().Include([]pubnub.PNChannelMetadataInclude).Sort(sort).ID(string).Name(string).Description(string).Custom(map[string]interface{}).Execute()
ParameterTypeRequiredDescription
IDstringYesUnique user identifier. If not supplied then current user's uuid is used.
NamestringYesName of a channel.
DescriptionstringOptionalDescription of a channel.
Custommap[string]interface{}OptionalMap of string and interface with supported data types. Values must be scalar only; arrays or objects are not supported. Objects filtering language doesn’t support filtering by custom properties.
Include[]pubnub.PNChannelMetadataIncludeOptionalList of additional/complex space attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNChannelMetadataIncludeCustom
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}

Basic Usage

id := "testchannel"
name := "name"
desc := "desc"
custom := make(map[string]interface{}) custom["a"] = "b" custom["c"] = "d"
incl := []pubnub.PNChannelMetadataInclude{
pubnub.PNChannelMetadataIncludeCustom,
}
res, status, err := pn.SetChannelMetadata().Include(incl).Channel(id).Name(name).Description(desc).Custom(custom).Execute()

Response

The SetChannelMetadata() operation returns a PNSetChannelMetadataResponse which contains the following parameters:

Property NameTypeDescription
DataPNChannelDetails of type PNChannel are here

PNChannel

Property NameTypeDescription
IDstringUnique user identifier. If not supplied then current user's uuid is used.
NamestringDisplay name for the user. Maximum 200 characters.
DescriptionstringDescription of a channel.
Custommap[string]interfaceMap of string and interface with supported data types. Values must be scalar only; arrays or objects are not supported.
UpdatedstringLast updated date.
ETagstringThe ETag.

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 Go V4 SDK:

pn.RemoveChannelMetadata().ID(string).Execute()
ParameterTypeRequiredDescription
IDstringYesUnique user identifier. If not supplied then current user's uuid is used.

Basic Usage

id := "testchannel"
res, status, err := pn.RemoveChannelMetadata().Channel(id).Execute()

Response

The RemoveChannelMetadata() operation returns a PNRemoveChannelMetadataResponse which contains the following parameters:

Property NameTypeDescription
Datainterface{}Returns an empty interface.

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 Go V4 SDK:

pn.GetMemberships().UUID(string).Include([]pubnub.PNMembershipsInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Filter(string).Execute()
ParameterTypeRequiredDescription
UUIDstringYesUnique user identifier. If not supplied then current user's uuid is used.
LimitintOptionalNumber of objects to return in response. Default is 100, which is also the maximum value.
CountboolOptionalRequest Count to be included in paginated response. By default, Count is omitted.
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. In addition to custom attributes, the expressions can refer to attributes on associated entities one level deep (that is, the association and its target entities).
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
Include[]pubnub.PNMembershipsIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNMembershipsIncludeCustom, pubnub.PNMembershipsIncludeChannel, pubnub.PNMembershipsIncludeChannelCustom

Basic Usage

inclMemberships := []pubnub.PNMembershipsInclude{
pubnub.PNMembershipsIncludeCustom,
pubnub.PNMembershipsIncludeChannel,
pubnub.PNMembershipsIncludeChannelCustom,
}

res, status, err := pn.GetMemberships().UUID("testuuid").Include(inclMemberships).Limit(100).Count(true).Execute()

Response

The GetMemberships() operation returns a PNGetMembershipsResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNMembershipsDetails of type PNMemberships are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

PNMemberships

Property NameTypeDescription
IDstringUnique user identifier. If not supplied then current user's uuid is used.
ChannelPNChannelDetails of type PNChannel are here
Custommap[string]interfaceMap of string and interface with supported data types.
UpdatedstringLast updated date.
ETagstringThe ETag.

Set Channel Memberships

Description

Set channel memberships for a UUID.

Method(s)

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

pn.SetMemberships().UUID(string).Set([]pubnub.PNMembershipsSet).Include([]pubnub.PNMembershipsInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Execute()
ParameterTypeRequiredDescription
UUIDstringYesUnique user identifier. If not supplied then current user's uuid is used.
Setpubnub.PNMembershipsSetOptionalStruct of type pubnub.PNMembershipsSet to be added for the specified UUID. In PNMembershipsSet you can set the Channel (of type PNMembershipsChannel - consisting of an ID of string type ) and a Custom map.
LimitintOptionalMaximum number of results to return per page. Default 100.
CountboolOptionalRequest TotalCount to be included in paginated response. Default false
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
Include[]pubnub.PNMembershipsIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNMembershipsIncludeCustom, pubnub.PNMembershipsIncludeChannel, pubnub.PNMembershipsIncludeChannelCustom

Basic Usage

inclMemberships := []pubnub.PNMembershipsInclude{
pubnub.PNMembershipsIncludeCustom,
pubnub.PNMembershipsIncludeChannel,
pubnub.PNMembershipsIncludeChannelCustom,
}

custom := make(map[string]interface{})
custom["a"] = "b"
custom["c"] = "d"
channel := pubnub.PNMembershipsChannel{
ID: "testchannel",
}

inMem := pubnub.PNMembershipsSet{
ID: channel,
show all 23 lines

Response

The SetMemberships() operation returns a PNSetMembershipsResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNMembershipsDetails of type PNMemberships are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

Remove Channel Memberships

Description

Remove channel memberships for a UUID.

Method(s)

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

pn.RemoveMemberships().UUID(string).Remove([]pubnub.PNMembershipsRemove).Include([]pubnub.PNMembershipsInclude).Limit(int).Count(bool).Start(string).End(string).Execute()
ParameterTypeRequiredDescription
UUIDstringYesUnique user identifier. If not supplied then current user's uuid is used.
Removepubnub.PNMembershipsRemoveOptionalStruct of type pubnub.PNMembershipsRemove to be added for the specified UUID. In PNMembershipsRemove you can set the Channel (of type PNMembershipsChannel - consisting of an ID of string type ) and a Custom map.
LimitintOptionalMaximum number of results to return per page. Default 100.
CountboolOptionalRequest TotalCount to be included in paginated response. Default false
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
Include[]pubnub.PNMembershipsIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNMembershipsIncludeCustom, pubnub.PNMembershipsIncludeChannel, pubnub.PNMembershipsIncludeChannelCustom

Basic Usage

inclMemberships := []pubnub.PNMembershipsInclude{
pubnub.PNMembershipsIncludeCustom,
pubnub.PNMembershipsIncludeChannel,
pubnub.PNMembershipsIncludeChannelCustom,
}
channel := pubnub.PNMembershipsChannel{
ID: "testchannel",
}
reMem := pubnub.PNMembershipsRemove{
ID: channel,
}
reArrMem := []pubnub.PNMembershipsRemove{
reMem,
}
res, status, err := pn.RemoveMemberships().UUID("testuuid").Remove(reArrMem).Include(inclMemberships).Limit(100).Count(true).Execute()
show all 16 lines

Response

The RemoveMemberships() operation returns a PNRemoveMembershipsResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNMembershipsDetails of type PNMemberships are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

Manage Channel Memberships

Description

Manage the specified UUID's memberships. You can Add, Remove, and Update a UUID's memberships.

Method(s)

To Manage Memberships you can use the following method(s) in the Go V4 SDK:

pn.ManageMemberships().UUID(string).Set([]pubnub.PNMembershipsSet).Remove([]pubnub.PNMembershipsRemove).Include([]pubnub.PNMembershipsInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Execute()
ParameterTypeRequiredDescription
UUIDstringstringUnique user identifier. If not supplied then current user's Uuid is used.
Setpubnub.PNMembershipsSetOptionalStruct of type pubnub.PNMembershipsSet to be added for the specified UUID. In PNMembershipsSet you can set the Channel (of type PNMembershipsChannel - consisting of an ID of string type ) and a Custom map.
Removepubnub.PNMembershipsRemoveOptionalStruct of type pubnub.PNMembershipsRemove to be added for the specified UUID. In PNMembershipsRemove you can set the Channel (of type PNMembershipsChannel - consisting of an ID of string type )
LimitintOptionalMaximum number of results to return per page. Default 100.
CountboolOptionalRequest TotalCount to be included in paginated response. Default false
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
Include[]pubnub.PNMembershipsIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNMembershipsIncludeCustom, pubnub.PNMembershipsIncludeChannel, pubnub.PNMembershipsIncludeChannelCustom

Basic Usage

inclMemberships := []pubnub.PNMembershipsInclude{
pubnub.PNMembershipsIncludeCustom,
pubnub.PNMembershipsIncludeChannel,
pubnub.PNMembershipsIncludeChannelCustom,
}

custom := make(map[string]interface{})
custom["a"] = "b"
custom["c"] = "d"
channel := pubnub.PNMembershipsChannel{
ID: "testchannel",
}

inMem := pubnub.PNMembershipsSet{
ID: channel,
show all 23 lines

Response

The ManageMemberships() operation returns a PNManageMembershipsResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNMembershipsDetails of type PNMemberships are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

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 Go V4 SDK:

pn.GetChannelMembers().Channel(string).Include(PNChannelMembersInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Filter(string).Execute()
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
LimitintOptionalMaximum number of results to return per page. Default 100.
CountboolOptionalRequest TotalCount to be included in paginated response. Default false
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
FilterstringOptionalExpression used to filter the results. Only objects whose properties satisfy the given expression are returned. The filter language is defined here. In addition to custom attributes, the expressions can refer to attributes on associated entities one level deep (that is, the association and its target entities).
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
Include[]pubnub.PNChannelMembersIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNChannelMembersIncludeCustom, pubnub.PNChannelMembersIncludeUUID, pubnub.PNChannelMembersIncludeUUIDCustom

Basic Usage

inclSm := []pubnub.PNChannelMembersInclude{
pubnub.PNChannelMembersIncludeCustom,
pubnub.PNChannelMembersIncludeUUID,
pubnub.PNChannelMembersIncludeUUIDCustom,
}

res, status, err := pn.GetChannelMembers().Channel("testchannel").Include(inclSm).Limit(100).Count(true).Execute()
fmt.Println(res, status, err)

Response

The GetChannelMembers() operation returns a PNGetChannelMembersResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNChannelMembersDetails of type PNChannelMembers are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

PNChannelMembers

Property NameTypeDescription
IDstringUnique user identifier. If not supplied then current user's uuid is used.
UUIDPNUUIDDetails of type PNUUID are here
Custommap[string]interfaceMap of string and interface with supported data types.
UpdatedstringLast updated date.
ETagstringThe ETag.

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 Go V4 SDK:

pn.SetChannelMembers().Channel(string).Set([]pubnub.PNChannelMembersSet).Include([]pubnub.PNChannelMembersInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Execute()
ParameterTypeRequiredDescription
ChannelstringYesChannel name.
Setpubnub.PNChannelMembersSetOptionalStruct of type pubnub.PNChannelMembersSet to be added for the specified space. In PNChannelMembersSet you can set the UUID (of type PNChannelMembersUUID - consisting of an ID of string type ) and a Custom map.
LimitintOptionalMaximum number of results to return per page. Default 100.
CountboolOptionalRequest TotalCount to be included in paginated response. Default false
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
Include[]pubnub.PNChannelMembersIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNChannelMembersIncludeCustom, pubnub.PNChannelMembersIncludeUUID, pubnub.PNChannelMembersIncludeUUIDCustom

Basic Usage

inclSm := []pubnub.PNChannelMembersInclude{
pubnub.PNChannelMembersIncludeCustom,
pubnub.PNChannelMembersIncludeUUID,
pubnub.PNChannelMembersIncludeUUIDCustom,
}
custom := make(map[string]interface{})
custom["a"] = "b"
custom["c"] = "d"
uuid := pubnub.PNChannelMembersUUID{
ID: "testuuid",
}
inputUUID := pubnub.PNChannelMembersSet{
UUID: uuid,
Custom: custom,
}
show all 22 lines

Response

The SetChannelMembers() operation returns a PNSetChannelMembersResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNChannelMembersDetails of type PNChannelMembers are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

Remove Channel Members

Description

Remove members from a Channel.

Method(s)

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

pn.RemoveChannelMembers().Channel(string).Remove([]pubnub.PNChannelMembersRemove{}).Include([]pubnub.PNChannelMembersInclude).Limit(int).Count(bool).Start(string).End(string).Execute()
ParameterTypeRequiredDefaultDescription
channelStringYesName of channel from which members should be fetched.
uuidsArrayYesList of UUIDs for which metadata associated with each of them in context of channel should be set. Each entry is dictionary with UUID and optional custom fields. custom should be dictionary with simple objects: String and Integer.
sortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
includeObjectOptional{ 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.
filterStringOptionalExpression to filter out results basing on specified criteria. For more details on the supported grammar, check here
startStringOptionalPreviously-returned cursor bookmark for fetching the next page.
endStringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
limitIntegerOptional100Number of objects to return in response. Default is 100, which is also the maximum value.
http_syncBooleanOptionalfalseMethod 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.
callbackLambda accepting one parameterOptionalCallback 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

inclSm := []pubnub.PNChannelMembersInclude{
pubnub.PNChannelMembersIncludeCustom,
pubnub.PNChannelMembersIncludeUUID,
pubnub.PNChannelMembersIncludeUUIDCustom,
}
uuid := pubnub.PNChannelMembersUUID{
ID: "testuuid",
}
re := pubnub.PNChannelMembersRemove{
UUID: uuid,
}

reArr := []pubnub.PNChannelMembersRemove{
re,
}
show all 18 lines

Response

The RemoveChannelMembers() operation returns a PNRemoveChannelMembersResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNChannelMembersDetails of type PNChannelMembers are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

Manage Channel Members

Description

The method Set and Remove channel memberships for a user.

Method(s)

To Manage Channel Members you can use the following method(s) in the Go V4 SDK:

pn.ManageChannelMembers().Channel(string).Set([]pubnub.PNChannelMembersSet).Remove([]pubnub.PNChannelMembersRemove{}).Include([]pubnub.PNChannelMembersInclude).Sort(sort).Limit(int).Count(bool).Start(string).End(string).Execute()
ParameterTypeRequiredDescription
ChannelstringYesChannel Name.
Setpubnub.PNChannelMembersSetOptionalStruct of type pubnub.PNChannelMembersSet to be added for the specified space. In PNChannelMembersSet you can set the UUID (of type PNChannelMembersUUID - consisting of an ID of string type ) and a Custom map.
Removepubnub.PNChannelMembersRemoveOptionalStruct of type pubnub.PNChannelMembersRemove to be removed for the specified space. In PNChannelMembersRemove you can set the UUID (of type PNChannelMembersUUID - consisting of an ID of string type )
LimitintOptionalMaximum number of results to return per page. Default 100.
CountboolOptionalRequest TotalCount to be included in paginated response. Default false
StartstringOptionalPreviously-returned cursor bookmark for fetching the next page.
EndstringOptionalPreviously-returned cursor bookmark for fetching the previous page. Ignored if you also supply the start parameter.
SortArrayOptionalList of criteria (name of field) which should be used for sorting. Available options are id, name, and updated. Use asc or desc to specify sort direction. For example: {name: 'asc'}
Include[]pubnub.PNChannelMembersIncludeOptionalList of additional/complex attributes to include in response. Omit this parameter if you don't want to retrieve additional attributes. Available values pubnub.PNChannelMembersIncludeCustom, pubnub.PNChannelMembersIncludeUUID, pubnub.PNChannelMembersIncludeUUIDCustom

Basic Usage

inclSm := []pubnub.PNChannelMembersInclude{
pubnub.PNChannelMembersIncludeCustom,
pubnub.PNChannelMembersIncludeUUID,
pubnub.PNChannelMembersIncludeUUIDCustom,
}
custom := make(map[string]interface{})
custom["a"] = "b"
custom["c"] = "d"
uuid := pubnub.PNChannelMembersUUID{
ID: "testuuid",
}
inputUUID := pubnub.PNChannelMembersSet{
UUID: uuid,
Custom: custom,
}
show all 22 lines

Response

The ManageChannelMembers() operation returns a PNManageMembersResponse which contains the following parameters:

Property NameTypeDescription
Data[]PNChannelMembersDetails of type PNChannelMembers are here
TotalCountintTotal count of objects without pagination.
NextstringCursor bookmark for fetching next page.
PrevstringCursor bookmark for fetching prev page.

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>
show all 26 lines

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 '*\\**'
Last updated on