clj-symphony.user

Operations related to users. A user can be either a human or a service account (bot). Users can be identified in 3 separate ways:

  1. via a user id - a Long that is globally unique across all pods
  2. via an email address - a String, though only unique within a pod
  3. via a username - a String, though only unique within a pod

cross-pod?

(cross-pod? c u)

Returns true if the given user is in a different pod to the authenticated connection user, or nil if the user doesn’t exist.

presence

multimethod

(presence c)(presence c u)

Returns the presence status of a single user, as a keyword. If no user identifier is provided, returns the presence status of the authenticated connection user.

presence-states

The set of possible presence states in Symphony, as keywords.

same-pod?

(same-pod? c u)

Returns true if the given user is in the same pod as the authenticated connection user, or nil if the user doesn’t exist.

set-presence!

(set-presence! c p)

Sets the presence status of the authenticated connection user. The new presence must be one of presence-states. Note: as of SJC 1.1.0, setting presences of other users is no longer supported.

update-user!

(update-user! c u)

Updates the details of an existing user, returning it as a map (see userobj->map for details). The new user details are provided as a map with these keys:

Key Description
:user-id The id of the user to update.
:username The new username of the user. #### This might be create-only?
:email-address The new email address of the user.
:title The new title of the user.
:first-name The new first name of the user.
:last-name The new last name of the user.
:display-name The new display name of the user.
:company The new company of the user. #### This might be read-only?
:location The new location of the user.
:avatars A sequence of avatar maps (see below).

:user-id is mandatory (it must be present and cannot be nil).

Avatar maps contain these keys:

Key Description
:size The ‘size string’ of the avatar (e.g. small, original).
:url The URL of the new avatar image file.

Note: calling this fn requires that the service account have the ‘user administration’ entitlement.

user

(user c)(user c u)

Returns a user as a map (see userobj->map for details) for the given user identifier, or the authenticated connection user if a user id is not provided.

user-by-username

(user-by-username c u)

Returns a user as a map (see userobj->map for details) for the given username, or nil if the user doesn’t exist.

user-id

multimethod

(user-id u)

Returns the id (a long) of the given user.

userobj

multimethod

(userobj c)(userobj c u)

Returns a org.symphonyoss.symphony.clients.model.SymUser object for the given user identifier, or the authenticated connection user if a user id is not provided. User can be specified either as a user id (Long) or an email address (String). Returns nil if the user doesn’t exist.

Note: providing a user identifier requires calls to the server.

userobj->map

(userobj->map u)

Converts a org.symphonyoss.symphony.clients.model.SymUser object into a map with these keys:

Key Description
:user-id The id of the user.
:username The username of the user.
:email-address The email address of the user.
:title The title of the user.
:first-name The first name of the user.
:last-name The last name of the user.
:display-name The display name of the user.
:company The company of the user.
:location The location of the user.
:avatars A sequence of avatar maps (see below).

Avatar maps contain these keys:

Key Description
:size The ‘size string’ of the avatar (e.g. small, original).
:url The URL of the new avatar image file.

userobj-by-username

(userobj-by-username c u)

Returns a org.symphonyoss.symphony.clients.model.SymUser object for the given username, or nil if the user doesn’t exist.

userobjs

(userobjs c)

Returns all users in the pod, as org.symphonyoss.symphony.clients.model.SymUser objects. Will throw an exception if the authenticated connection user doesn’t have sufficient permissions.

users

(users c)

Returns all users in the pod as maps (see userobj->map). Will throw an exception if the authenticated connection user doesn’t have sufficient permissions.