# 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 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](https://docs.developers.symphony.com/building-extension-applications-on-symphony/app-authentication/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.

<table><thead><tr><th width="327">OBO-enabled endpoint</th><th width="195">Permission</th><th>Endpoint documentation</th></tr></thead><tbody><tr><td>GET /pod/v1/connection/list</td><td>GET_USER_CONNECTIONS</td><td><a data-mention href="/pages/mIozaSn9HaKKBMF72SbQ">/pages/mIozaSn9HaKKBMF72SbQ</a></td></tr><tr><td>GET /pod/v1/admin/system/protocols/list</td><td>SEND_MESSAGES</td><td><p><em>Deprecated documentation. For more information, refer to:</em></p><p><a data-mention href="/pages/rrW0dxqJ0XALRyQUEI3b">/pages/rrW0dxqJ0XALRyQUEI3b</a></p></td></tr><tr><td>GET /pod/v1/connection/user/{userId}/info</td><td>GET_USER_CONNECTIONS</td><td><a data-mention href="/pages/1skpI0wNR2ouSnWJcJoU">/pages/1skpI0wNR2ouSnWJcJoU</a></td></tr><tr><td>GET /pod/v1/files/allowedTypes</td><td>SEND_MESSAGES</td><td><a data-mention href="/pages/lVq6rByF9MGbEhL1GGmi">/pages/lVq6rByF9MGbEhL1GGmi</a></td></tr><tr><td>GET /pod/v1/presence/feed/{feedId}/read</td><td>GET_PRESENCE</td><td><a data-mention href="/pages/U7OxQkFF5VQletQPFMes">/pages/U7OxQkFF5VQletQPFMes</a></td></tr><tr><td>GET /pod/v1/sessioninfo</td><td>GET_BASIC_USER_INFO</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/yYK763uCdGWxeyw0cKYQ">/pages/yYK763uCdGWxeyw0cKYQ</a></td></tr><tr><td>GET /pod/v1/streams/{streamId}/info</td><td>SEND_MESSAGES</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/f1lkRncUJmnoka8J69gC">/pages/f1lkRncUJmnoka8J69gC</a></td></tr><tr><td>GET /pod/v1/user</td><td>GET_BASIC_CONTACT_INFO</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/eKBGHqOjwe6iaz62HWEA">/pages/eKBGHqOjwe6iaz62HWEA</a></td></tr><tr><td>GET /pod/v1/user/presence</td><td>GET_PRESENCE</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/L8Abr3Wf0n6N23pxk9vI">/pages/L8Abr3Wf0n6N23pxk9vI</a></td></tr><tr><td>GET /pod/v1/user/{userId}/presence</td><td>GET_PRESENCE</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/PoFcOW1wge8cBui4jD19">/pages/PoFcOW1wge8cBui4jD19</a></td></tr><tr><td>GET /pod/v2/sessioninfo</td><td>GET_BASIC_USER_INFO</td><td><a data-mention href="/pages/yYK763uCdGWxeyw0cKYQ">/pages/yYK763uCdGWxeyw0cKYQ</a></td></tr><tr><td>GET /pod/v2/user</td><td>GET_BASIC_CONTACT_INFO  SEND_MESSAGES</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/eKBGHqOjwe6iaz62HWEA">/pages/eKBGHqOjwe6iaz62HWEA</a></td></tr><tr><td>GET /pod/v2/user/presence</td><td>GET_PRESENCE</td><td><a data-mention href="/pages/L8Abr3Wf0n6N23pxk9vI">/pages/L8Abr3Wf0n6N23pxk9vI</a></td></tr><tr><td>GET /pod/v2/user/{userId}/presence</td><td>GET_PRESENCE</td><td><em>Deprecated documentation. For more information, refer to:</em><br><a data-mention href="/pages/PoFcOW1wge8cBui4jD19">/pages/PoFcOW1wge8cBui4jD19</a></td></tr><tr><td>GET /pod/v3/room/{roomId}/info</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/lB8KolMLiQkIQOJNSxBQ">/pages/lB8KolMLiQkIQOJNSxBQ</a></td></tr><tr><td>GET /pod/v3/user/{userId}/presence</td><td>GET_PRESENCE</td><td><a data-mention href="/pages/PoFcOW1wge8cBui4jD19">/pages/PoFcOW1wge8cBui4jD19</a></td></tr><tr><td>GET /pod/v3/users</td><td>GET_BASIC_CONTACT_INFO</td><td><a data-mention href="/pages/eKBGHqOjwe6iaz62HWEA">/pages/eKBGHqOjwe6iaz62HWEA</a></td></tr><tr><td>POST /v1/user/{uid}/follow</td><td>MANAGE_USER_FOLLOWING</td><td><a data-mention href="/pages/7IPrcdfnQWmuEHqyA19I">/pages/7IPrcdfnQWmuEHqyA19I</a></td></tr><tr><td>POST /v1/user/{uid}/unfollow</td><td>MANAGE_USER_FOLLOWING</td><td><a data-mention href="/pages/i9GnDKrzeGPGHMPJqOvs">/pages/i9GnDKrzeGPGHMPJqOvs</a></td></tr><tr><td>GET /agent/v1/signals/{signalId}/get</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/wd0koxucO0LwcL5LbNKm">/pages/wd0koxucO0LwcL5LbNKm</a></td></tr><tr><td>GET  /agent/v1/signals/{signalId}/subscribers</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/ACeKPqEUkOa8WiLZHqRL">/pages/ACeKPqEUkOa8WiLZHqRL</a></td></tr><tr><td>GET  /agent/v1/signals/list</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/H9BvxfGCH7GIRUnuc7HY">/pages/H9BvxfGCH7GIRUnuc7HY</a></td></tr><tr><td>POST /agent/v1/signals/create</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/bDLu6q1eZJCk0CgfoHza">/pages/bDLu6q1eZJCk0CgfoHza</a></td></tr><tr><td>POST /agent/v1/signals/{signalId}/update</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/0D9fLyAUb20gPeupPnpd">/pages/0D9fLyAUb20gPeupPnpd</a></td></tr><tr><td>POST /agent/v1/signals/{signalId}/delete</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/HP0Z4uMWBwUbn8TTi2cT">/pages/HP0Z4uMWBwUbn8TTi2cT</a></td></tr><tr><td>POST /agent/v1/signals/{signalId}/subscribe</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/AC5L5WAKnTLTNtajzJ1G">/pages/AC5L5WAKnTLTNtajzJ1G</a></td></tr><tr><td>POST /agent/v1/signals/{signalId}/unsubscribe</td><td>MANAGE_SIGNALS</td><td><a data-mention href="/pages/gdJs5kQkbHSb5i7sfsAf">/pages/gdJs5kQkbHSb5i7sfsAf</a></td></tr><tr><td>POST /agent/v3/stream/{streamId}/share</td><td>SEND_MESSAGES</td><td><a data-mention href="/pages/SU7Ch6IObT1Z0cLmDiMh">/pages/SU7Ch6IObT1Z0cLmDiMh</a></td></tr><tr><td>POST /agent/v4/stream/{streamId}/message/create</td><td>SEND_MESSAGES</td><td><a data-mention href="/pages/ehGwBvwaMIEWzlStKYOx">/pages/ehGwBvwaMIEWzlStKYOx</a></td></tr><tr><td>POST /agent/v4/message/blast</td><td>SEND_MESSAGES</td><td><a data-mention href="/pages/UHXORS6Dz7xn35s62W5L">/pages/UHXORS6Dz7xn35s62W5L</a></td></tr><tr><td>POST /agent/v4/stream/{:sid}/message/{:mid}/update</td><td>SEND_MESSAGES</td><td><a data-mention href="/pages/vucA2sPJHQ9PMcFGrqbU">/pages/vucA2sPJHQ9PMcFGrqbU</a></td></tr><tr><td>POST /v1/admin/messagesuppression/{messageId}/suppress</td><td>SUPPRESS_MESSAGES</td><td><a data-mention href="/pages/uRcJWMyZEK8dyh7FIwhO">/pages/uRcJWMyZEK8dyh7FIwhO</a></td></tr><tr><td>POST /pod/v1/connection/create</td><td>REQUEST_USER_CONNECTIONS</td><td><a data-mention href="/pages/FbG9fRDvI4qT8YOLkcN9">/pages/FbG9fRDvI4qT8YOLkcN9</a></td></tr><tr><td>POST /pod/v1/im/create</td><td>SEND_MESSAGES</td><td><a data-mention href="/pages/q9CAqiK7ruQK9t16OuyH">/pages/q9CAqiK7ruQK9t16OuyH</a></td></tr><tr><td>POST /pod/v1/presence/feed/create</td><td>GET_PRESENCE</td><td><a data-mention href="/pages/xDWny0kWxp7DnrXu7OMk">/pages/xDWny0kWxp7DnrXu7OMk</a></td></tr><tr><td>POST /pod/v1/presence/feed/{feedId}/delete</td><td>GET_PRESENCE</td><td><a data-mention href="/pages/vombKpIS3y8MXmk11DJX">/pages/vombKpIS3y8MXmk11DJX</a></td></tr><tr><td>POST /pod/v2/room/{roomId}/membership/list</td><td>MANAGE_ROOMS<br>LIST_USER_STREAMS</td><td>Since SBE 20.16<br><a data-mention href="/pages/7ILYTDxOcojZDuIR9H6T">/pages/7ILYTDxOcojZDuIR9H6T</a></td></tr><tr><td>POST /pod/v1/room/{roomId}/membership/add</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/QC1Rsg9M3CyEPEbVTJtM">/pages/QC1Rsg9M3CyEPEbVTJtM</a></td></tr><tr><td>POST /pod/v1/room/{roomId}/membership/demoteOwner</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/S86t6XTphY6Jg7byPXeU">/pages/S86t6XTphY6Jg7byPXeU</a></td></tr><tr><td>"POST" /pod/v1/room/{roomId}/membership/promoteOwner</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/2Kss9VcbVjVwnplgwMxh">/pages/2Kss9VcbVjVwnplgwMxh</a></td></tr><tr><td>POST /pod/v1/room/{roomId}/membership/remove</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/nYnj8ov8uEvfC6WUSsOm">/pages/nYnj8ov8uEvfC6WUSsOm</a></td></tr><tr><td>POST /pod/v1/room/{roomId}/setActive</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/xpY7Pl9GOoeGsprbEfu5">/pages/xpY7Pl9GOoeGsprbEfu5</a></td></tr><tr><td>POST /pod/v1/streams/list</td><td>LIST_USER_STREAMS</td><td><a data-mention href="/pages/E1u41UHYesTLGJSg3jRz">/pages/E1u41UHYesTLGJSg3jRz</a></td></tr><tr><td>POST /pod/v2/user/presence</td><td>SET_PRESENCE</td><td><a data-mention href="/pages/PiOGmxBF6g96fY6B9r4K">/pages/PiOGmxBF6g96fY6B9r4K</a></td></tr><tr><td>POST /pod/v1/user/presence/register</td><td>GET_PRESENCE</td><td><a data-mention href="/pages/tuIPEwbfPA0dFdw4VkqR">/pages/tuIPEwbfPA0dFdw4VkqR</a></td></tr><tr><td>POST /pod/v1/user/search</td><td>GET_BASIC_CONTACT_INFO</td><td><a data-mention href="/pages/pBbBmSNvNOqlRJtTaaKa">/pages/pBbBmSNvNOqlRJtTaaKa</a></td></tr><tr><td>POST /pod/v2/user/presence</td><td>SET_PRESENCE</td><td><a data-mention href="/pages/PiOGmxBF6g96fY6B9r4K">/pages/PiOGmxBF6g96fY6B9r4K</a></td></tr><tr><td>POST /pod/v3/room/create</td><td>MANAGE_ROOMS  CREATE_USER_STREAM</td><td><a data-mention href="/pages/yCsXZPy2jssQzEh8R4ew">/pages/yCsXZPy2jssQzEh8R4ew</a></td></tr><tr><td>POST /pod/v3/room/search</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/WcJCaaZLaDd0de0bT5pK">/pages/WcJCaaZLaDd0de0bT5pK</a></td></tr><tr><td>POST /pod/v3/room/{roomId}/update</td><td>MANAGE_ROOMS</td><td><a data-mention href="/pages/MRgt7FVE43dWvZAxgGhG">/pages/MRgt7FVE43dWvZAxgGhG</a></td></tr><tr><td>POST /pod/v3/user/presence</td><td>SET_PRESENCE</td><td><a data-mention href="/pages/afTlLFjj3ICA2an5Dkdw">/pages/afTlLFjj3ICA2an5Dkdw</a></td></tr></tbody></table>

### The following table describes the use of permissions:

<table><thead><tr><th width="288">Permission</th><th>Usage</th></tr></thead><tbody><tr><td>GET_BASIC_CONTACT_INFO</td><td>An app can get basic contact info.</td></tr><tr><td>GET_BASIC_USER_INFO</td><td>An app can get basic contact info.</td></tr><tr><td>SEND_MESSAGES</td><td>An app can send messages on behalf of a user. Creates IM for users.</td></tr><tr><td>SUPPRESS_MESSAGES</td><td>An app can suppress a user's messages on behalf of that user.</td></tr><tr><td>CREATE_USER_STREAM</td><td>An app can create streams on behalf of a user.</td></tr><tr><td>MANAGE_ROOMS</td><td>An app can manage streams on behalf of a user.</td></tr><tr><td>MANAGE_SIGNALS</td><td>An app can list, create, edit, and delete signals on behalf of a user.</td></tr><tr><td>LIST_USER_STREAMS</td><td>An app can get a list of user streams on behalf of users.</td></tr><tr><td>GET_USER_CONNECTIONS</td><td>An app can get an <code>appinfo</code> of all user connections on behalf of users.</td></tr><tr><td>REQUEST_USER_CONNECTIONS</td><td>An app can send connection requests on behalf of users.</td></tr><tr><td>GET_PRESENCE</td><td>An app can get a user presence on behalf of users.</td></tr><tr><td>SET_PRESENCE</td><td>An app can set presence on behalf of users.</td></tr><tr><td>MANAGE_USER_FOLLOWING</td><td>An app can make a list of users follow or unfollow a considered user, identified by his uid.</td></tr></tbody></table>

> 🚧 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rest-api.symphony.com/main/apps-on-behalf-of-obo/obo-enabled-endpoints.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
