Set user metadata

Sets metadata for the specified UUID. Returns the updated UUID object, optionally including custom properties.

Note:

  • You can change all of the UUID object's properties except its identifier.
  • Invalid property names are silently ignored and will not cause a request to fail.
  • If you set the custom property, you must completely replace it since partial updates are not supported.
  • The custom object can only contain scalar values.
Path Parameters
sub_key string REQUIRED

Your app's subscribe key from Admin Portal.

uuid string REQUIRED

A UTF-8 encoded string used to identify the client. Must not be empty and can contain up to 92 UTF-8 byte sequences.

Prohibited characters are: ,, /, \, *, :, channel, non-printable ASCII control characters, and Unicode zero.

Query Parameters
include string[]

Possible values: [custom, type, status]

List of additional/complex UUID metadata to include in the response. Omit this query parameter if you don't want to retrieve additional metadata.

auth string

String which is either the auth key (PAM v2) or a valid token (Access Manager) used to authorize the operation if access control is enabled. Authorization token with permissions to perform the request.

signature string

Signature used to verify that the request was signed with the secret key associated with the subscribe key.

If Access Manager is enabled, either a valid authorization token or a signature are required. Check Access Manager documentation for details on how to compute the signature.

timestamp integer

Unix epoch timestamp used as a nonce for signature computation. Must have no more than ± 60 seconds offset from NTP. Required if signature parameter is supplied.

Header Parameters
If-Match string

An optional HTTP header that prevents concurrent modifications of the same User object by allowing clients to (optionally) request that their updates only be performed if the object hasn't been modified since it was read.

You can add If-Match in the Set user metadata requests and set it to the value of the eTag field from a previous Get user metadata response body.

Imagine the use case where you want to modify an existing User object only if it hasn't been modified since the last time you read it.

This is how the flow would look like:

  1. The client reads the details of a User object from App Context API through the Get user metadata request that returns a response body containing the eTag value representing the object's current state, like 8f6da76a321017a34e0a72ed674393ee.
  2. The client sends the eTag value of 8f6da76a321017a34e0a72ed674393ee in the If-Match HTTP header in a subsequent Set user metadata request, like -H 'If-Match: 8f6da76a321017a34e0a72ed674393ee'.
  3. Since that eTag value in the If-Match HTTP header matches the User object's current eTag value, the Set user metadata request will succeed. If the request is sent with an old eTag value that doesn't match the User object's current eTag value, the request will fail with a 412 (Precondition failed) error.

Note The If-Match precondition checking for concurrent modifications is currently not supported for the membership/members' metadata APIs. These APIs also return an eTag field in the response body, but that field is not yet checked in the request header.

Request Body REQUIRED

JSON object with UUID metadata to set.

name string

Possible values: 1 ≤ length

Name of the UUID. Max. 2,048 characters. Must not be empty or consist only of whitespace characters.

externalId string

UUID's identifier in an external system. Max. 2,048 characters.

profileUrl uri

URL for the UUID's profile picture. Max. 2,048 characters. Syntax is as defined in RFC 3986.

email email

The UUID's email address. Max. 320 characters. Syntax is as defined by RFC 5322 and extended by RFC 6532, with one exception: the display-name part is not allowed (only the addr-spec part is allowed).

type string

User type. Max. 50 characters.

status string

User status. Max. 50 characters.

custom object

JSON object of key/value pairs with supported data-types. Values must be scalar only; arrays or objects are not supported.

NOTE: If you set custom fields with integer values, do not specify numbers larger than 9007199254740991 due to precision limitations in JSON implementations. For large integer values, for example PubNub timetoken values, use string values instead of integers.

Responses
200

Successfully set UUID metadata.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

data object OPTIONAL

Object with UUID metadata used in responses.

id string OPTIONAL

Possible values: 1 ≤ length ≤ 92

A UTF-8 encoded string used to identify the client. Must not be empty, and may contain up to 92 UTF-8 byte sequences.

Prohibited characters are: ,, /, \, *, :, channel, non-printable ASCII control characters, and Unicode zero.

updated date-time OPTIONAL

Date and time the object was last updated.

eTag string OPTIONAL

Information on the object's content fingerprint.

NOTE: eTag from GET requests can be used alongside the If-Match HTTP header in conditional PATCH requests in users/channels' metadata APIs. This functionality is currently not supported in the membership/members' metadata APIs.

name string OPTIONAL

Possible values: 1 ≤ length

Name of the UUID. Max. 2,048 characters. Must not be empty or consist only of whitespace characters.

externalId string OPTIONAL

UUID's identifier in an external system. Max. 2,048 characters.

profileUrl uri OPTIONAL

URL for the UUID's profile picture. Max. 2,048 characters. Syntax is as defined in RFC 3986.

email email OPTIONAL

The UUID's email address. Max. 320 characters. Syntax is as defined by RFC 5322 and extended by RFC 6532, with one exception: the display-name part is not allowed (only the addr-spec part is allowed).

type string OPTIONAL

User type. Max. 50 characters.

status string OPTIONAL

User status. Max. 50 characters.

custom object OPTIONAL

JSON object of key/value pairs with supported data-types. Values must be scalar only; arrays or objects are not supported.

NOTE: If you set custom fields with integer values, do not specify numbers larger than 9007199254740991 due to precision limitations in JSON implementations. For large integer values, for example PubNub timetoken values, use string values instead of integers.

400

The request body contains invalid data.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]

403

Disabled - The subscribe key doesn't have App Context API enabled.

Forbidden - The client isn't authorized to perform this operation. The authorization key you provided doesn't have the required permissions for this operation.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]

412

Conditional operation cannot be performed because the target resource has changed since the last retrieval.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]

415

The format of the request body you supplied isn't supported. The request body must be in JSON format.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]

429

Request rate limit exceeded.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]

500

An internal server error occurred.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]

503

Request processing exceeded the maximum allowed time.

Schema OPTIONAL
status integer OPTIONAL

HTTP status code.

error object OPTIONAL

Error response.

message string OPTIONAL

User-facing error message.

source string OPTIONAL

Possible values: [metadata, authz]

Internal source of the error.

details object[] OPTIONAL
message string OPTIONAL

A user-facing error message.

location string OPTIONAL

Name of the offending query string parameter, or a dot-delimited JSON path to the source of the error in the input document, if applicable.

locationType string OPTIONAL

Possible values: [path, query, header, body]