API Endpoints for Apps

Get Started with OBO

OBO or On-Behalf-Of authentication allows an extension application to be able to call REST API endpoints to perform operations on behalf of an application end-user.

Such operations include:

  • List the streams of a given user
  • Initiate connection requests to and determine connection status with other users
  • Get the presence state of other connected users
  • Initiate IMs and MIMs with other users
  • Send messages and attachments
  • Set the context user's own presence

📘

More information on OBO

For more information, please refer to OBO Authentication.

API endpoints enabled for OBO

The following table describes which of our REST API endpoints are OBO-enabled, and for each the application permission that must be granted to the app.

OBO-enabled endpointPermissionEndpoint documentation
"GET", "/pod/v1/connection/list"GET_USER_CONNECTIONSList Connections
"GET", "/pod/v1/admin/system/protocols/list"SEND_MESSAGESDeprecated documentation.
For more information, refer to:

List Protocols v2
"GET", "/pod/v1/connection/user/{userId}/info"GET_USER_CONNECTIONSGet Connection
"GET", "/pod/v1/files/allowedTypes"SEND_MESSAGESAttachment Types
"GET", "/pod/v1/presence/feed/{feedId}/read"GET_PRESENCERead Presence Feed
"GET", "/pod/v1/sessioninfo"GET_BASIC_USER_INFODeprecated documentation.
For more information, refer to:

Session User v2
"GET", "/pod/v1/streams/{streamId}/info"SEND_MESSAGESDeprecated documentation.
For more information, refer to:

Stream Info v2
"GET", "/pod/v1/user"GET_BASIC_CONTACT_INFODeprecated documentation.
For more information, refer to:

Users Lookup v3
"GET", "/pod/v1/user/presence"GET_PRESENCEDeprecated documentation.
For more information, refer to:

Get Presence
"GET", "/pod/v1/user/{userId}/presence"GET_PRESENCEDeprecated documentation.
For more information, refer to:

Get User Presence
"GET", "/pod/v2/sessioninfo"GET_BASIC_USER_INFOSession User v2
"GET", "/pod/v2/user"GET_BASIC_CONTACT_INFO
SEND_MESSAGES
Deprecated documentation.
For more information, refer to:

Users Lookup v3
"GET", "/pod/v2/user/presence"GET_PRESENCEGet Presence
"GET", "/pod/v2/user/{userId}/presence"GET_PRESENCEDeprecated documentation.
For more information, refer to:

Get User Presence
"GET", "/pod/v3/room/{roomId}/info"MANAGE_ROOMSRoom Info v3
"GET", "/pod/v3/user/{userId}/presence"GET_PRESENCEGet User Presence
"GET", "/pod/v3/users"GET_BASIC_CONTACT_INFOUsers Lookup v3
"POST", "/v1/user/{uid}/follow"MANAGE_USER_FOLLOWINGFollow User
"POST", "/v1/user/{uid}/unfollow"MANAGE_USER_FOLLOWINGUnfollow User
"GET", "/agent/v1/signals/{signalId}/get"MANAGE_SIGNALSGet Signal
"GET", "/agent/v1/signals/{signalId}/subscribers"MANAGE_SIGNALSSubscribers
"GET", "/agent/v1/signals/list"MANAGE_SIGNALSList Signals
"POST", "/agent/v1/signals/create"MANAGE_SIGNALSCreate Signal
"POST", "/agent/v1/signals/{signalId}/update"MANAGE_SIGNALSUpdate Signal
"POST", "/agent/v1/signals/{signalId}/delete"MANAGE_SIGNALSDelete Signal
"POST", "/agent/v1/signals/{signalId}/subscribe"MANAGE_SIGNALSSubscribe Signal
"POST", "/agent/v1/signals/{signalId}/unsubscribe"MANAGE_SIGNALSUnsubscribe Signal
"POST", "/agent/v3/stream/{streamId}/message/create"SEND_MESSAGESDeprecated documentation.
For more information, refer to:

Create Message v4
"POST", "/agent/v3/stream/{streamId}/share"SEND_MESSAGESShare
"POST", "/agent/v4/stream/{streamId}/message/create"SEND_MESSAGESCreate Message v4
"POST", "/v1/admin/messagesuppression/{messageId}/suppress"SUPPRESS_MESSAGESSuppress Message
"POST", "/pod/v1/connection/create"REQUEST_USER_CONNECTIONSCreate Connection
"POST", "/pod/v1/im/create"SEND_MESSAGESCreate IM or MIM
"POST", "/pod/v1/presence/feed/create"GET_PRESENCECreate Presence Feed
"POST", "/pod/v1/presence/feed/{feedId}/delete"GET_PRESENCEDelete Presence Feed
"POST", "/pod/v1/room/{roomId}/membership/add"MANAGE_ROOMSAdd Member
"POST", "/pod/v1/room/{roomId}/membership/demoteOwner"MANAGE_ROOMSDemote Owner
"POST", "/pod/v1/room/{roomId}/membership/promoteOwner"MANAGE_ROOMSPromote Owner
"POST", "/pod/v1/room/{roomId}/membership/remove"MANAGE_ROOMSRemove Member
"POST", "/pod/v1/room/{roomId}/setActive"MANAGE_ROOMSDe/Re-activate Room
"POST", "/pod/v1/streams/list"LIST_USER_STREAMSList User Streams
"POST", "/pod/v1/user/presence"SET_PRESENCEDeprecated documentation.
For more information, refer to:

Set Presence
"POST", "/pod/v1/user/presence/register"GET_PRESENCEExternal Presence Interest
"POST", "/pod/v1/user/search"GET_BASIC_CONTACT_INFOSearch Users
"POST", "/pod/v2/user/presence"SET_PRESENCESet Presence
"POST", "/pod/v3/room/create"MANAGE_ROOMS
CREATE_USER_STREAM
Create Room v3
"POST", "/pod/v3/room/search"MANAGE_ROOMSSearch Rooms v3
"POST", "/pod/v3/room/{roomId}/update"MANAGE_ROOMSUpdate Room v3
"POST", "/pod/v3/user/presence"SET_PRESENCESet Other User's Presence - Admin V3

The following table describes the use of permissions:

PermissionUsage
GET_BASIC_CONTACT_INFOAn app can get basic contact info.
GET_BASIC_USER_INFOAn app can get basic contact info.
SEND_MESSAGESAn app can send messages on behalf of a user. Creates IM for users.
SUPPRESS_MESSAGESAn app can suppress a user's messages on behalf of that user.
CREATE_USER_STREAMAn app can create streams on behalf of a user.
MANAGE_ROOMSAn app can manage streams on behalf of a user.
MANAGE_SIGNALSAn app can list, create, edit, and delete signals on behalf of a user.
LIST_USER_STREAMSAn app can get a list of user streams on behalf of users.
GET_USER_CONNECTIONSAn app can get an appinfo of all user connections on behalf of users.
REQUEST_USER_CONNECTIONSAn app can send connection requests on behalf of users.
GET_PRESENCEAn app can get a user presence on behalf of users.
SET_PRESENCEAn app can set presence on behalf of users.
MANAGE_USER_FOLLOWINGAn app can make a list of users follow or unfollow a considered user, identified by his uid.

🚧

All OBO endpoints respect any existing entitlements or state for the user in session.

For instance, if a user is not already connected to another user, an app cannot send a message to the second user on behalf of the first. Another example is that if a user does not have the "Can Send Files" entitlement in Symphony, an app cannot send a message containing an attachment on behalf of the user.