<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Discourse: ChatApi</title> <link type="text/css" rel="stylesheet" href="styles/vendor/prism-custom.css"> <link type="text/css" rel="stylesheet" href="styles/styles.css"> </head> <body> <header class="layout-header"> <h1> <a href="./index.html"> Discourse </a> </h1> <nav class="layout-nav"> <ul><li class="nav-heading">Classes</li><li class="nav-heading"><span class="nav-item-type type-class" title="class">C</span><span class="nav-item-name is-class"><a href="PluginApi.html">PluginApi</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="PluginApi.html#decorateChatMessage">decorateChatMessage</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="PluginApi.html#registerChatComposerButton">registerChatComposerButton</a></span></li><li class="nav-heading"><span class="nav-item-type type-class" title="class">C</span><span class="nav-item-name is-class"><a href="module.exports.html">exports</a></span></li></ul><ul><li class="nav-heading">Modules</li><li class="nav-heading"><span class="nav-item-type type-module" title="module">M</span><span class="nav-item-name is-module"><a href="module-ChatApi.html">ChatApi</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#categoryPermissions">categoryPermissions</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#channel">channel</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#channels">channels</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#createChannel">createChannel</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#createChannelArchive">createChannelArchive</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#destroyChannel">destroyChannel</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#followChannel">followChannel</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#listChannelMemberships">listChannelMemberships</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#listCurrentUserChannels">listCurrentUserChannels</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#moveChannelMessages">moveChannelMessages</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#sendMessage">sendMessage</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#unfollowChannel">unfollowChannel</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#updateChannel">updateChannel</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#updateChannelStatus">updateChannelStatus</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="module-ChatApi.html#updateCurrentUserChannelNotificationsSettings">updateCurrentUserChannelNotificationsSettings</a></span></li></ul><li class="nav-heading"><a href="global.html">Globals</a></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="global.html#load">load</a></span></li><li class="nav-item"><span class="nav-item-type type-function" title="function">F</span><span class="nav-item-name is-function"><a href="global.html#loadMore">loadMore</a></span></li> </nav> </header> <main class="layout-main "> <div class="container"> <p class="page-kind">Module</p> <h1 class="page-title">ChatApi</h1> <section> <header class="not-class"> </header> <article> <div class="container-overview"> <div class="description">Chat API service. Provides methods to interact with the chat API.</div> <div class="details"> <h4 class="method-heading">Implements</h4> <ul> <li>{@ember/service}</li> </ul> </div> </div> <h3 class="subtitle">Methods</h3> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="categoryPermissions">categoryPermissions<span class="signature">(categoryId)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Lists chat permissions for a category. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">categoryId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">ID of the category.</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.107">, line 107</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="channel">channel<span class="signature">(channelId)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Get a channel by its ID. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Example</h4> <pre><code class="language-js">this.chatApi.channel(1).then(channel => { ... })</code></pre> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.24">, line 24</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="channels">channels<span class="signature">()</span><span class="return-type-signature"> → {Collection}</span> </h4> <div class="method-description"> List all accessible category channels of the current user. </div> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Collection</code> </li> </ul> <h4 class="method-heading">Example</h4> <pre><code class="language-js">this.chatApi.channels.then(channels => { ... })</code></pre> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.38">, line 38</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="createChannel">createChannel<span class="signature">(data)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Creates a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">data</span> <span class="param-type"> <code>object</code> </span> <div class="param-description">Params of the channel.</div> <p class="param-properties">Properties</p> <ul class="method-params"> <li> <span class="param-name">name</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> </span> <div class="param-description">The name of the channel.</div> </li> <li> <span class="param-name">chatable_id</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> </span> <div class="param-description">The category of the channel.</div> </li> <li> <span class="param-name">description</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> </span> <div class="param-description">The description of the channel.</div> </li> <li> <span class="param-name">auto_join_users</span> <span class="param-type"> <code>boolean</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Should users join this channel automatically.</div> </li> </ul> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Example</h4> <pre><code class="language-js">this.chatApi .createChannel({ name: "foo", chatable_id: 1, description "bar" }) .then((channel) => { ... })</code></pre> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.96">, line 96</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="createChannelArchive">createChannelArchive<span class="signature">(channelId, data)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Creates a channel archive. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> <li> <span class="param-name">data</span> <span class="param-type"> <code>object</code> </span> <div class="param-description">Params of the archive.</div> <p class="param-properties">Properties</p> <ul class="method-params"> <li> <span class="param-name">selection</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> </span> <div class="param-description">"new_topic" or "existing_topic".</div> </li> <li> <span class="param-name">title</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Title of the topic when creating a new topic.</div> </li> <li> <span class="param-name">category_id</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">ID of the category used when creating a new topic.</div> </li> <li> <span class="param-name">tags</span> <span class="param-type"> <code>Array.<string></code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">tags used when creating a new topic.</div> </li> <li> <span class="param-name">topic_id</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">ID of the topic when using an existing topic.</div> </li> </ul> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.141">, line 141</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="destroyChannel">destroyChannel<span class="signature">(channelId)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Destroys a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Example</h4> <pre><code class="language-js">this.chatApi.destroyChannel(1).then(() => { ... })</code></pre> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.77">, line 77</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="followChannel">followChannel<span class="signature">(channelId)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Makes current user follow a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.202">, line 202</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="listChannelMemberships">listChannelMemberships<span class="signature">(channelId)</span><span class="return-type-signature"> → {Collection}</span> </h4> <div class="method-description"> Lists members of a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Collection</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.174">, line 174</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="listCurrentUserChannels">listCurrentUserChannels<span class="signature">()</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Lists public and direct message channels of the current user. </div> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.189">, line 189</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="moveChannelMessages">moveChannelMessages<span class="signature">(channelId, data)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Moves messages from one channel to another. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the original channel.</div> </li> <li> <span class="param-name">data</span> <span class="param-type"> <code>object</code> </span> <div class="param-description">Params of the move.</div> <p class="param-properties">Properties</p> <ul class="method-params"> <li> <span class="param-name">message_ids</span> <span class="param-type"> <code>Array.<number></code> </span> <div class="param-description">IDs of the moved messages.</div> </li> <li> <span class="param-name">destination_channel_id</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">ID of the channel where the messages are moved to.</div> </li> </ul> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Example</h4> <pre><code class="language-js">this.chatApi .moveChannelMessages(1, { message_ids: [2, 3], destination_channel_id: 4, }).then(() => { ... })</code></pre> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.62">, line 62</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="sendMessage">sendMessage<span class="signature">(channelId, data)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Sends a message. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">ID of the channel.</div> </li> <li> <span class="param-name">data</span> <span class="param-type"> <code>object</code> </span> <div class="param-description">Params of the message.</div> <p class="param-properties">Properties</p> <ul class="method-params"> <li> <span class="param-name">message</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> </span> <div class="param-description">The raw content of the message in markdown.</div> </li> <li> <span class="param-name">cooked</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> </span> <div class="param-description">The cooked content of the message.</div> </li> <li> <span class="param-name">in_reply_to_id</span> <span class="param-type"> <code>number</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">The ID of the replied-to message.</div> </li> <li> <span class="param-name">staged_id</span> <span class="param-type"> <code>number</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">The staged ID of the message before it was persisted.</div> </li> <li> <span class="param-name">upload_ids</span> <span class="param-type"> <code>Array.<number></code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Array of upload ids linked to the message.</div> </li> </ul> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.122">, line 122</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="unfollowChannel">unfollowChannel<span class="signature">(channelId)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Makes current user unfollow a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.213">, line 213</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="updateChannel">updateChannel<span class="signature">(channelId, data)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Updates a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> <li> <span class="param-name">data</span> <span class="param-type"> <code>object</code> </span> <div class="param-description">Params of the archive.</div> <p class="param-properties">Properties</p> <ul class="method-params"> <li> <span class="param-name">description</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Description of the channel.</div> </li> <li> <span class="param-name">name</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Name of the channel.</div> </li> </ul> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.155">, line 155</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="updateChannelStatus">updateChannelStatus<span class="signature">(channelId, status)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Updates the status of a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> <li> <span class="param-name">status</span> <span class="param-type"> <code>string</code> </span> <div class="param-description">The new status, can be "open" or "closed".</div> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.165">, line 165</a> </li> </ul> </article> <article class="method"> <div class="method-type"> </div> <h4 class="method-name" id="updateCurrentUserChannelNotificationsSettings">updateCurrentUserChannelNotificationsSettings<span class="signature">(channelId, data)</span><span class="return-type-signature"> → {Promise}</span> </h4> <div class="method-description"> Update notifications settings of current user for a channel. </div> <h4 class="method-heading">Parameters</h4> <ul class="method-params"> <li> <span class="param-name">channelId</span> <span class="param-type"> <code>number</code> </span> <div class="param-description">The ID of the channel.</div> </li> <li> <span class="param-name">data</span> <span class="param-type"> <code>object</code> </span> <div class="param-description">The settings to modify.</div> <p class="param-properties">Properties</p> <ul class="method-params"> <li> <span class="param-name">muted</span> <span class="param-type"> <code>boolean</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Mutes the channel.</div> </li> <li> <span class="param-name">desktop_notification_level</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Notifications level on desktop: never, mention or always.</div> </li> <li> <span class="param-name">mobile_notification_level</span> <span class="param-type"> <code>string</code> </span> <span class="param-attributes"> <optional><br> </span> <div class="param-description">Notifications level on mobile: never, mention or always.</div> </li> </ul> </li> </ul> <div class="details"> </div> <h4 class="method-heading">Returns</h4> <ul> <li class="method-returns"> <code>Promise</code> </li> </ul> <h4 class="method-heading">Source</h4> <ul> <li class="method-source"> <a href="services_chat-api.js.html">services/chat-api.js</a><a href="services_chat-api.js.html#source.228">, line 228</a> </li> </ul> </article> </article> </section> </div> </main> <footer class="layout-footer"> <div class="container"> Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.0</a> </div> </footer> <script src="scripts/prism.dev.js"></script> </body> </html>