<html>
<head>
<meta name="viewport" content="width=device-width" />
<base href="https://wiki.asterisk.org/wiki" />
<style type="text/css">
body, #email-content, #email-content-inner { font-family: Arial,FreeSans,Helvetica,sans-serif; }
body, p, blockquote, pre, code, td, th, li, dt, dd { font-size: 13px; }
small { font-size: 11px; }
body { width:100% !important; -webkit-font-smoothing: antialiased; }
body,
#email-wrapper { background-color: #f0f0f0; }
#email-wrapper-inner { padding: 20px; text-align: center; }
#email-content-inner { background-color: #fff; border: 1px solid #bbb; color: $menuTxtColour; padding:20px; text-align:left; }
#email-wrapper-inner > table { width: 100%; }
#email-wrapper-inner.thin > table { margin: 0 auto; width: 50%; }
#email-footer { padding: 0 16px 32px 16px; margin: 0; }
.email-indent { margin: 8px 0 16px 0; }
.email-comment { margin: 0 0 0 56px; }
.email-comment.removed { background-color: #ffe7e7; border: 1px solid #df9898; padding: 0 8px;}
#email-title-avatar { text-align: left; vertical-align: top; width: 48px; padding-right: 8px; }
#email-title-flavor { margin: 0; padding: 0 0 4px 0; }
#email-title-heading { font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0; }
#email-title .icon { border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle; }
#email-actions { border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; }
#email-actions td { padding-top: 8px; }
#email-actions .left { max-width: 45%; text-align: left; }
#email-actions .right { text-align: right; }
.email-reply-divider { border-top: 1px solid #bbb; color: #505050; margin: 32px 0 8px 0; padding: 8px 0; }
.email-section-title { border-bottom: 1px solid #bbb; margin: 8px 0; padding: 8px 0 0 0; }
.email-metadata { color: #505050; }
a { color: #326ca6; text-decoration: none; }
a:hover { color: #336ca6; text-decoration: underline; }
a:active {color: #326ca6; }
a.email-footer-link { color: #505050; font-size: 11px; }
.email-item-list { list-style: none; margin: 4px 0; padding-left: 0; }
.email-item-list li { list-style: none; margin: 0; padding: 4px 0; }
.email-list-divider { color: #505050; padding: 0 0.35em; }
.email-operation-icon { padding-right: 5px; }
.avatar { -ms-interpolation-mode: bicubic; border-radius: 3px;}
.avatar-link { margin: 2px; }
.tableview th { border-bottom: 1px solid #69C; font-weight: bold; text-align: left; }
.tableview td { border-bottom: 1px solid #bbbbbb; text-align: left; padding: 4px 16px 4px 0; }
.aui-message { margin: 1em 0; padding: 8px; }
.aui-message.info { background-color: #e0f0ff; border: 1px solid #9eb6d4; }
.aui-message.success { background-color: #ddfade; border: 1px solid #93c49f; }
.aui-message.error,
.aui-message.removed { background-color: #ffe7e7; border: 1px solid #df9898; color: #000; }
.call-to-action-table { margin: 10px 1px 1px 1px;}
.call-to-cancel-container, .call-to-action-container { padding: 5px 20px; }
.call-to-cancel-container { border: 1px solid #aaa; background-color: #eee; border-radius: 3px; }
.call-to-cancel-container a.call-to-cancel-button { background-color: #eee; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #666; font-family: sans-serif;}
.call-to-action-container { border: 1px solid #486582; background-color: #3068A2; border-radius: 3px; padding: 4px 10px; }
.call-to-action-container a.call-to-action-button { background-color: #3068A2; font-size: 14px; line-height: 1; padding: 0; margin: 0; color: #fff; font-weight: bold; font-family: sans-serif; }
/** The span around the inline task checkbox image */
.diff-inline-task-overlay {
display: inline-block;
text-align: center;
height: 1.5em;
padding: 5px 0px 1px 5px;
margin-right: 5px;
/** Unfortunately, the negative margin-left is stripped out in gmail */
margin-left: -5px;
}
@media handheld, only screen and (max-device-width: 480px) {
div, a, p, td, th, li, dt, dd { -webkit-text-size-adjust: auto; }
small, small a { -webkit-text-size-adjust: 90%; }
td[id=email-wrapper-inner] { padding: 2px !important; }
td[id=email-content-inner] { padding: 8px !important; }
td[id="email-wrapper-inner"][class="thin"] > table { text-align: left !important; width: 100% !important; }
td[id=email-footer] { padding: 8px 12px !important; }
div[class=email-indent] { margin: 8px 0px !important; }
div[class=email-comment] { margin: 0 !important; }
p[id=email-title-flavor] a { display: block; } /* puts the username and the action on separate lines */
p[id=email-permalink] { padding: 4px 0 0 0 !important; }
table[id=email-actions] td { padding-top: 0 !important; }
table[id=email-actions] td.right { text-align: right !important; }
table[id=email-actions] .email-list-item { display: block; margin: 1em 0 !important; word-wrap: normal !important; }
span[class=email-list-divider] { display: none; }
}
</style>
</head>
<body style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; width: 100%; -webkit-font-smoothing: antialiased; background-color: #f0f0f0">
<table id="email-wrapper" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f0f0f0">
<tbody>
<tr valign="middle">
<td id="email-wrapper-inner" style="font-size: 13px; padding: 20px; text-align: center">
<table id="email-content" cellspacing="0" cellpadding="0" border="0" style="font-family: Arial, FreeSans, Helvetica, sans-serif; width: 100%">
<tbody>
<tr valign="top">
<td id="email-content-inner" align="left" style="font-family: Arial, FreeSans, Helvetica, sans-serif; font-size: 13px; background-color: #fff; border: 1px solid #bbb; padding: 20px; text-align: left">
<table id="email-title" cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody>
<tr>
<td id="email-title-avatar" rowspan="2" style="font-size: 13px; text-align: left; vertical-align: top; width: 48px; padding-right: 8px"> <img class="avatar" src="cid:avatar_16181e6326f183784f186951c83d98b8" border="0" height="48" width="48" style="-ms-interpolation-mode: bicubic; border-radius: 3px" /> </td>
<td valign="top" style="font-size: 13px">
<div id="email-title-flavor" class="email-metadata" style="margin: 0; padding: 0 0 4px 0; color: #505050">
<a href=" https://wiki.asterisk.org/wiki/display/~dlee " style="color:#326ca6;text-decoration:none;; color: #326ca6; text-decoration: none">David M. Lee</a> created a page:
</div> </td>
</tr>
<tr>
<td valign="top" style="font-size: 13px"> <h2 id="email-title-heading" style="font-size: 16px; line-height: 20px; min-height: 20px; margin: 0; padding: 0"> <a href="https://wiki.asterisk.org/wiki/display/AST/Blinky+Lights+API" style="color: #326ca6; text-decoration: none"> <img class="icon" src="cid:page-icon" alt="" style="border: 0; padding: 0 5px 0 0; text-align: left; vertical-align: middle" /> <strong style="font-size:16px;line-height:20px;vertical-align:top;">Blinky Lights API</strong> </a> </h2> </td>
</tr>
</tbody>
</table>
<div class="email-indent" style="margin: 8px 0 16px 0">
<div class="email-page">
<h1 id="BlinkyLightsAPI-nonetrue">
<style type="text/css">/**/
div.rbtoc1383670930229 {padding: 0px;}
div.rbtoc1383670930229 ul {list-style: none;margin-left: 0px;}
div.rbtoc1383670930229 li {margin-left: 0px;padding-left: 0px;}
/**/
</style>
<div class="toc-macro rbtoc1383670930229" style="padding: 0px">
<ul class="toc-indentation" style="list-style: none; margin-left: 0px">
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">1</span> <a href="#BlinkyLightsAPI-UseCases" style="color: #326ca6; text-decoration: none">Use Cases</a>
<ul class="toc-indentation" style="list-style: none; margin-left: 0px">
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">1.1</span> <a href="#BlinkyLightsAPI-Mailboxes%2FMWI" style="color: #326ca6; text-decoration: none">Mailboxes/MWI</a> </li>
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">1.2</span> <a href="#BlinkyLightsAPI-Presence" style="color: #326ca6; text-decoration: none">Presence</a> </li>
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">1.3</span> <a href="#BlinkyLightsAPI-DeviceState" style="color: #326ca6; text-decoration: none">Device State</a> </li>
</ul> </li>
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">2</span> <a href="#BlinkyLightsAPI-Proposalone%3AGenerictopics" style="color: #326ca6; text-decoration: none">Proposal one: Generic topics</a>
<ul class="toc-indentation" style="list-style: none; margin-left: 0px">
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">2.1</span> <a href="#BlinkyLightsAPI-API" style="color: #326ca6; text-decoration: none">API</a> </li>
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">2.2</span> <a href="#BlinkyLightsAPI-Datamodel" style="color: #326ca6; text-decoration: none">Data model</a> </li>
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">2.3</span> <a href="#BlinkyLightsAPI-Proposaltwo%3AFirstclassresources" style="color: #326ca6; text-decoration: none">Proposal two: First class resources</a> </li>
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">2.4</span> <a href="#BlinkyLightsAPI-DataModel" style="color: #326ca6; text-decoration: none">Data Model</a>
<ul class="toc-indentation" style="list-style: none; margin-left: 0px">
<li style="font-size: 13px; margin-left: 0px; padding-left: 0px"> <span class="TOCOutline">2.4.1</span> <a href="#BlinkyLightsAPI-Events" style="color: #326ca6; text-decoration: none">Events</a> </li>
</ul> </li>
</ul> </li>
</ul>
</div> </h1>
<h1 id="BlinkyLightsAPI-UseCases">Use Cases</h1>
<h2 id="BlinkyLightsAPI-Mailboxes%2FMWI">Mailboxes/MWI</h2>
<ol>
<li style="font-size: 13px">App can create a custom mailbox
<ol>
<li style="font-size: 13px">Are mailboxes given names, or do they have unique id's?</li>
<li style="font-size: 13px">Does a mailbox's existence persist across restarts? What about it's state?</li>
</ol> </li>
<li style="font-size: 13px">App can associate custom mailbox with a blinky light on a device
<ol>
<li style="font-size: 13px">Does this happen via the app, or via configuration?</li>
</ol> </li>
<li style="font-size: 13px">App can publish a new state for a mailbox
<ol>
<li style="font-size: 13px">Are there any common attributes for mailbox state (unplayed message count, last message timestamp, etc.)</li>
</ol> </li>
</ol>
<h2 id="BlinkyLightsAPI-Presence">Presence</h2>
<ol>
<li style="font-size: 13px">App can publish new presence state
<ol>
<li style="font-size: 13px">Are there any common attributes for presence state (state, last change timestamp, etc.)</li>
</ol> </li>
</ol>
<h2 id="BlinkyLightsAPI-DeviceState">Device State</h2>
<ol>
<li style="font-size: 13px">App can create a custom device state
<ol>
<li style="font-size: 13px">This can be used as an extension state in the dialplan</li>
</ol> </li>
<li style="font-size: 13px">App can publish new device state
<ol>
<li style="font-size: 13px">Are there any common attributes for device state (state, last change timestamp, etc.)</li>
</ol> </li>
</ol>
<h1 id="BlinkyLightsAPI-Proposalone%3AGenerictopics">Proposal one: Generic topics</h1>
<h2 id="BlinkyLightsAPI-API" class="p1">API</h2>
<p class="p1" style="font-size: 13px">GET /topics List[Topic] - list all topics, with optional filter for type</p>
<p class="p1" style="font-size: 13px">GET /topic Topic - get information about a specific topic</p>
<p class="p1" style="font-size: 13px">DELETE /topic - destroy a topic. This should implicitly unsubscribe all subscribers.</p>
<p class="p1" style="font-size: 13px">POST /topics Topic - create a new topic. When you create a topic, you are implicitly subscribed to that topic.</p>
<p class="p1" style="font-size: 13px"> type: The type of topic to create. Valid types initially would be 'mailbox', 'device', 'presence'</p>
<p class="p1" style="font-size: 13px"> uri: The URI subscribers will use to subscribe to the topic</p>
<p class="p1" style="font-size: 13px">POST /topics/publish - publish an event to a topic. Events are passed as JSON, and are opaque from the perspective of ARI. It would be up to the specific topic types to understand the event packages.</p>
<p class="p1" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">/applications/{applicationName}/subscription will be updated to allow for an ARI client to subscribe to any topic in Asterisk.</p>
<h2 id="BlinkyLightsAPI-Datamodel">Data model</h2>
<p class="p1" style="font-size: 13px">Topic:</p>
<ul>
<li class="p1" style="font-size: 13px"> type: string - Valid types initially would be 'mailbox', 'device', 'presence'</li>
<li class="p1" style="font-size: 13px"> uri: string - The URI subscribers use to subscribe to the topic</li>
<li class="p1" style="font-size: 13px"> subscribers: List[Subscriber] - A list of active subscriptions</li>
<li class="p1" style="font-size: 13px"> id: string - A unique ID for the topic</li>
</ul>
<p class="p2" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">Subscriber</p>
<ul>
<li class="p1" style="font-size: 13px"> id: string - A unique ID for the subscriber</li>
<li class="p1" style="font-size: 13px"> topic_id: string - The topic ID this subscription refers to</li>
<li class="p1" style="font-size: 13px"> endpoint: Endpoint - If available, the endpoint that subscribed to this Topic</li>
</ul>
<p class="p2" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">TopicSubscriptionCreated : Event - Event raised when a new subscription is created for a topic</p>
<ul>
<li class="p1" style="font-size: 13px"> subscriber : Subscriber</li>
<li class="p1" style="font-size: 13px"> topic: Topic</li>
</ul>
<p class="p2" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">TopicSubscriptionDestroyed : Event - Event raised when a subscription is destroyed for a topic</p>
<ul>
<li class="p1" style="font-size: 13px"> subscriber : Subscriber</li>
<li class="p1" style="font-size: 13px"> topic : Topic</li>
</ul>
<p class="p2" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">TopicEvent : Event - Event raised in relation to a topic</p>
<ul>
<li class="p1" style="font-size: 13px"> topic : Topic</li>
<li class="p1" style="font-size: 13px"> body : JSON</li>
</ul>
<p class="p2" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">TopicCreated : Event - Event raised when a new topic is created</p>
<ul>
<li class="p1" style="font-size: 13px"> topic : Topic</li>
</ul>
<p class="p2" style="font-size: 13px"> </p>
<p class="p1" style="font-size: 13px">TopicDestroyed : Event - Event raised when a topic is destroyed</p>
<ul>
<li class="p1" style="font-size: 13px"> topic : Topic</li>
</ul>
<h2 id="BlinkyLightsAPI-Proposaltwo%3AFirstclassresources" class="p1"> <span style="font-family: MuseoSans700 , sans-serif;font-size: 24.0px;line-height: 1.25;">Proposal two: First class resources</span> </h2>
<div class="aui-message warning shadowed information-macro" style="margin: 1em 0; padding: 8px">
<span class="aui-icon icon-warning">Icon</span>
<div class="message-content">
<p style="font-size: 13px">Work in progress...</p>
</div>
</div>
<p style="font-size: 13px"> <span style="color: rgb(133,120,102);font-family: MuseoSans500 , sans-serif;font-size: 20.0px;line-height: 1.5;">API</span> </p>
<p style="font-size: 13px">/mailboxes/...</p>
<p style="font-size: 13px">/devicestates/...</p>
<p style="font-size: 13px">/presencestates/...</p>
<h2 id="BlinkyLightsAPI-DataModel">Data Model</h2>
<p style="font-size: 13px">Mailbox</p>
<ul>
<li style="font-size: 13px">id: string</li>
<li style="font-size: 13px">custom: object - custom mailbox state</li>
</ul>
<p style="font-size: 13px">DeviceState</p>
<ul>
<li style="font-size: 13px">id: string</li>
<li style="font-size: 13px">custom: object - custom device state</li>
</ul>
<p style="font-size: 13px">PresenceState</p>
<ul>
<li style="font-size: 13px">id: string</li>
<li style="font-size: 13px">custom: object - custom presence state</li>
</ul>
<h3 id="BlinkyLightsAPI-Events">Events</h3>
<p style="font-size: 13px">Mailbox{Created,Changed,Destroyed}</p>
<ul>
<li style="font-size: 13px">mailbox: Mailbox</li>
</ul>
<p style="font-size: 13px">DeviceState{Created,Changed,Destroyed}</p>
<ul>
<li style="font-size: 13px">device_state: DeviceState</li>
</ul>
<p style="font-size: 13px">PresenceState{Created,Changed,Destroyed}</p>
<ul>
<li style="font-size: 13px">presence_state: PresenceState</li>
</ul>
<p style="font-size: 13px"> </p>
</div>
</div>
<table id="email-actions" class="email-metadata" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-top: 1px solid #bbb; color: #505050; margin: 8px 0 0 0; padding: 0; color: #505050">
<tbody>
<tr>
<td class="left" valign="top" style="font-size: 13px; padding-top: 8px; max-width: 45%; text-align: left"> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/display/AST/Blinky+Lights+API" style="color: #326ca6; text-decoration: none">View Online</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/plugins/likes/like.action?contentId=26479969" style="color: #326ca6; text-decoration: none">Like</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/display/AST/Blinky+Lights+API?showComments=true&showCommentArea=true#addcomment" style="color: #326ca6; text-decoration: none">Add Comment</a> </span> </td>
<td class="right" width="50%" valign="top" style="font-size: 13px; padding-top: 8px; text-align: right"> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/users/removespacenotification.action?spaceKey=AST" style="color: #326ca6; text-decoration: none">Stop watching space</a> </span> <span class="email-list-divider" style="color: #505050; padding: 0 0.350em">·</span> <span class="email-list-item"><a href="https://wiki.asterisk.org/wiki/users/editmyemailsettings.action" style="color: #326ca6; text-decoration: none">Manage Notifications</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-footer" align="center" style="font-size: 13px; padding: 0 16px 32px 16px; margin: 0"> <small style="font-size: 11px"> This message was sent by <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence">Atlassian Confluence</a> 5.1.5, <a class="email-footer-link" style="color:#505050;font-size:11px;text-decoration:none;; color: #326ca6; text-decoration: none; color: #505050; font-size: 11px" href="http://www.atlassian.com/software/confluence/overview/team-collaboration-software?utm_source=email-footer">Team Collaboration Software</a> </small> </td>
</tr>
</tbody>
</table>
</body>
</html>