1
0
mirror of https://github.com/linkedin/oncall.git synced 2025-11-30 23:44:59 +02:00
Files
oncall/docs/api.html
Qingping Hou bce986e8d2 Generated gh-pages for commit 477d3c6
Merge: 6558d1f 9e2812d
Author: Saif Ebrahim <ebrahim.saif@gmail.com>

    Merge pull request #45 from houqp/docs
2017-05-26 00:10:05 -07:00

2503 lines
161 KiB
HTML

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>REST API &mdash; Oncall 1.0.0 documentation</title>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="index" title="Index"
href="genindex.html"/>
<link rel="search" title="Search" href="search.html"/>
<link rel="top" title="Oncall 1.0.0 documentation" href="index.html"/>
<link rel="prev" title="Admin guide" href="admin_guide.html"/>
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> Oncall
</a>
<div class="version">
1.0.0
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Table of contents</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="user_guide.html">User guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="admin_guide.html">Admin guide</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">REST API</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-teams">/api/v0/teams</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-schedules">/api/v0/schedules</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-services">/api/v0/services</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-roles">/api/v0/roles</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-events">/api/v0/events</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-users">/api/v0/users</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-notifications">/api/v0/notifications</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-notification-types">/api/v0/notification_types</a></li>
<li class="toctree-l2"><a class="reference internal" href="#api-v0-search">/api/v0/search</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">Oncall</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>REST API</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/api.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="rest-api">
<h1>REST API<a class="headerlink" href="#rest-api" title="Permalink to this headline"></a></h1>
<div class="section" id="api-v0-teams">
<h2>/api/v0/teams<a class="headerlink" href="#api-v0-teams" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-teams">
<code class="descname">GET </code><code class="descname">/api/v0/teams</code><a class="headerlink" href="#get--api-v0-teams" title="Permalink to this definition"></a></dt>
<dd><p>Search for team names. Allows filtering based on a number of parameters, detailed below.
Returns list of matching team names. If &#8220;active&#8221; parameter is unspecified, defaults to
True (only displaying undeleted teams)</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first last simple">
<li><strong>name</strong> &#8211; team name</li>
<li><strong>name__eq</strong> &#8211; team name</li>
<li><strong>name__contains</strong> &#8211; team name contains param</li>
<li><strong>name__startswith</strong> &#8211; team name starts with param</li>
<li><strong>name__endswith</strong> &#8211; team name ends with param</li>
<li><strong>id</strong> &#8211; team id</li>
<li><strong>id__eq</strong> &#8211; team id</li>
<li><strong>active</strong> &#8211; team active/deleted (1 and 0, respectively)</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams?name__startswith=team-</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="s2">&quot;team-bar&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams">
<code class="descname">POST </code><code class="descname">/api/v0/teams</code><a class="headerlink" href="#post--api-v0-teams" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint for team creation. The user who creates the team is automatically added as a
team admin. Because of this, this endpoint cannot be called using an API key, otherwise
a team would have no admins, making many team operations impossible.</p>
<p>Teams can specify a number of attributes, detailed below:</p>
<ul class="simple">
<li>name: the team&#8217;s name. Teams must have unique names.</li>
<li>email: email address for the team.</li>
<li>slack_channel: slack channel for the team. Must start with &#8216;#&#8217;</li>
<li>iris_plan: Iris escalation plan that incidents created from the Oncall UI will follow.</li>
</ul>
<p>If iris plan integration is not activated, this attribute can still be set, but its
value is not used.</p>
<p>Teams must specify <code class="docutils literal"><span class="pre">name</span></code> and <code class="docutils literal"><span class="pre">scheduling_timezone</span></code>; other parameters are optional.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/teams</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;scheduling_timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;slack_channel&quot;</span><span class="p">:</span> <span class="s2">&quot;#team-foo&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">Created</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Successful create</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Error in creating team. Possible errors: API key auth not allowed, invalid attributes, missing required attributes</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Duplicate team name</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}</code><a class="headerlink" href="#get--api-v0-teams-team" title="Permalink to this definition"></a></dt>
<dd><p>Get team info by name. By default, only finds active teams. Allows selection of
fields, including: users, admins, services, and rosters. If no <code class="docutils literal"><span class="pre">fields</span></code> is
specified in the query string, it defaults to all fields.</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;admins&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;foo@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">5501</span><span class="p">,</span>
<span class="nt">&quot;iris_plan&quot;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;rosters&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;roster-foo&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">4186</span><span class="p">,</span>
<span class="nt">&quot;schedules&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="mi">21</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">604800</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">7200</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">2222</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;role_id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;roster&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;roster_id&quot;</span><span class="p">:</span> <span class="mi">4186</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;team_id&quot;</span><span class="p">:</span> <span class="mi">5501</span><span class="p">,</span>
<span class="nt">&quot;timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;users&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;in_rotation&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="nt">&quot;scheduling_timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span><span class="p">,</span>
<span class="nt">&quot;services&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="s2">&quot;service-foo&quot;</span>
<span class="p">],</span>
<span class="nt">&quot;slack_channel&quot;</span><span class="p">:</span> <span class="s2">&quot;#foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;users&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;jdoe&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;image.example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_zone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-teams-team">
<code class="descname">PUT </code><code class="descname">/api/v0/teams/{team}</code><a class="headerlink" href="#put--api-v0-teams-team" title="Permalink to this definition"></a></dt>
<dd><p>Edit a team&#8217;s information. Allows edit of: name, slack_channel, email, scheduling_timezone, iris_plan.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/api/v0/teams/team-foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;team-bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;slack_channel&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="mi">28</span><span class="p">,</span>
<span class="nt">&quot;scheduling_timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Central&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful edit</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Invalid team name/iris escalation plan</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Duplicate team name</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-teams-team">
<code class="descname">DELETE </code><code class="descname">/api/v0/teams/{team}</code><a class="headerlink" href="#delete--api-v0-teams-team" title="Permalink to this definition"></a></dt>
<dd><p>Soft delete for teams. Does not remove data from the database, but sets the team&#8217;s active
param to false. Note that this means deleted teams&#8217; names remain in the namespace, so new
teams cannot be created with the same name a sa deleted team.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/teams/team-foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Team not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-summary">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/summary</code><a class="headerlink" href="#get--api-v0-teams-team-summary" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint to get a summary of the team&#8217;s oncall information. Returns an object
containing the fields <code class="docutils literal"><span class="pre">current</span></code> and <code class="docutils literal"><span class="pre">next</span></code>, which then contain information
on the current and next on-call shifts for this team. <code class="docutils literal"><span class="pre">current</span></code> and <code class="docutils literal"><span class="pre">next</span></code>
are objects keyed by role (if an event of that role exists), with values of
lists of event/user information. This list will have multiple elements if
multiple events with the same role are currently occurring, or if multiple
events with the same role are starting next in the future at the same time.</p>
<p>If no event with a given role exists, that role is excluded from the <code class="docutils literal"><span class="pre">current</span></code>
or <code class="docutils literal"><span class="pre">next</span></code> object. If no events exist, the <code class="docutils literal"><span class="pre">current</span></code> and <code class="docutils literal"><span class="pre">next</span></code> objects
will be empty objects.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">api/v0/teams/team-foo/summary</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;current&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;manager&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1495760400</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;example.image.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;manager&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1495436400</span><span class="p">,</span>
<span class="nt">&quot;user_contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;user_id&quot;</span><span class="p">:</span> <span class="mi">1234</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;primary&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1495760400</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Adam Smith&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;example.image.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1495350000</span><span class="p">,</span>
<span class="nt">&quot;user_contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 222-222-2222&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 222-222-2222&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;user_id&quot;</span><span class="p">:</span> <span class="mi">1235</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">},</span>
<span class="nt">&quot;next&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;manager&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1496127600</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;example.image.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;manager&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1495436400</span><span class="p">,</span>
<span class="nt">&quot;user_contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;user_id&quot;</span><span class="p">:</span> <span class="mi">1234</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;primary&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1495760400</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Adam Smith&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;example.image.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1495350000</span><span class="p">,</span>
<span class="nt">&quot;user_contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 222-222-2222&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 222-222-2222&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;user_id&quot;</span><span class="p">:</span> <span class="mi">1235</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-oncall-role">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/oncall/{role}</code><a class="headerlink" href="#get--api-v0-teams-team-oncall-role" title="Permalink to this definition"></a></dt>
<dd><p>Get current active event for team based on given role.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team_ops/oncall/primary</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1487426400</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1487469600</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Foo Icecream&quot;</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 123-456-7890&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;foo@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 123-456-7890&quot;</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1487426400</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1487469600</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Bar Dog&quot;</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 123-456-7890&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;bar@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 123-456-7890&quot;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; no error</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-admins">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/admins</code><a class="headerlink" href="#get--api-v0-teams-team-admins" title="Permalink to this definition"></a></dt>
<dd><p>Get list of admin usernames for a team</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo/admins</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="s2">&quot;asmith&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams-team-admins">
<code class="descname">POST </code><code class="descname">/api/v0/teams/{team}/admins</code><a class="headerlink" href="#post--api-v0-teams-team-admins" title="Permalink to this definition"></a></dt>
<dd><p>Add user as a team admin. Responds with that user&#8217;s info (similar to user GET).
Subscribes this user to default notifications for the team, and adds the user
to the team (if needed).</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/v0/teams/team-foo/admins</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">9535</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;image.example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_zone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Successful admin added</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Missing name attribute in request</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Invalid team/user, or user is already a team admin</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-teams-team-admins-user">
<code class="descname">DELETE </code><code class="descname">/api/v0/teams/{team}/admins/{user}</code><a class="headerlink" href="#delete--api-v0-teams-team-admins-user" title="Permalink to this definition"></a></dt>
<dd><p>Delete team admin user. Removes admin from the team if he/she is not a member of any roster.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/teams/team-foo/admins/jdoe</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Team admin not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-users">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/users</code><a class="headerlink" href="#get--api-v0-teams-team-users" title="Permalink to this definition"></a></dt>
<dd><p>Get list of usernames for all team members. A user is a member of a team when
he/she is a team admin or a member of one of the team&#8217;s rosters. Accepts an
<code class="docutils literal"><span class="pre">active</span></code> parameter in the query string that filters inactive (deleted) teams.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo/users</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="s2">&quot;asmith&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams-team-users">
<code class="descname">POST </code><code class="descname">/api/v0/teams/{team}/users</code><a class="headerlink" href="#post--api-v0-teams-team-users" title="Permalink to this definition"></a></dt>
<dd><p>Add user to a team. Deprecated; used only for testing purposes.</p>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-teams-team-users-user">
<code class="descname">DELETE </code><code class="descname">/api/v0/teams/{team}/users/{user}</code><a class="headerlink" href="#delete--api-v0-teams-team-users-user" title="Permalink to this definition"></a></dt>
<dd><p>Delete user from a team</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/teams/team-foo/users/jdoe</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; User not found in team</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-rosters">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/rosters</code><a class="headerlink" href="#get--api-v0-teams-team-rosters" title="Permalink to this definition"></a></dt>
<dd><p>Get roster info for a team. Returns a JSON object with roster names
as keys, and info as values. This info includes the roster id, any
schedules associated with the rosters, and roster users (along
with their status as in/out of rotation).</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo/rosters</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;roster-foo&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">2923</span><span class="p">,</span>
<span class="nt">&quot;schedules&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">604800</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">266400</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1788</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;role_id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;roster&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;roster_id&quot;</span><span class="p">:</span> <span class="mi">2923</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;team_id&quot;</span><span class="p">:</span> <span class="mi">2122</span><span class="p">,</span>
<span class="nt">&quot;timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;users&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;in_rotation&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;in_rotation&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Invalid team</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams-team-rosters">
<code class="descname">POST </code><code class="descname">/api/v0/teams/{team}/rosters</code><a class="headerlink" href="#post--api-v0-teams-team-rosters" title="Permalink to this definition"></a></dt>
<dd><p>Create a roster for a team</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/v0/teams/team-foo/rosters</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-foo&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">Created</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Succesful roster creation</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Invalid character in roster name/Duplicate roster name</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-rosters-roster">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}</code><a class="headerlink" href="#get--api-v0-teams-team-rosters-roster" title="Permalink to this definition"></a></dt>
<dd><p>Get user and schedule info for a roster</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/foo-sre/rosters</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;Managers&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">2730</span><span class="p">,</span>
<span class="nt">&quot;users&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;in_rotation&quot;</span><span class="p">:</span> <span class="kc">true</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;foo&quot;</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;schedules&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;roster&quot;</span><span class="p">:</span> <span class="s2">&quot;Managers&quot;</span><span class="p">,</span>
<span class="nt">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;manager&quot;</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;foo-sre&quot;</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">604800</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">367200</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1704</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; no error</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-teams-team-rosters-roster">
<code class="descname">PUT </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}</code><a class="headerlink" href="#put--api-v0-teams-team-rosters-roster" title="Permalink to this definition"></a></dt>
<dd><p>Change roster name. Must have team admin privileges.</p>
<blockquote>
<div><strong>Example request:</strong></div></blockquote>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/api/v0/teams/team-foo/rosters/roster-foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-bar&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Invalid roster name, disallowed characters</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Duplicate roster name for team</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-teams-team-rosters-roster">
<code class="descname">DELETE </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}</code><a class="headerlink" href="#delete--api-v0-teams-team-rosters-roster" title="Permalink to this definition"></a></dt>
<dd><p>Delete roster</p>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-rosters-roster-users">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}/users</code><a class="headerlink" href="#get--api-v0-teams-team-rosters-roster-users" title="Permalink to this definition"></a></dt>
<dd><p>Get all users for a team&#8217;s roster</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo/rosters/roster-foo/users</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span><span class="s2">&quot;jdoe&quot;</span><span class="p">,</span> <span class="s2">&quot;asmith&quot;</span><span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams-team-rosters-roster-users">
<code class="descname">POST </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}/users</code><a class="headerlink" href="#post--api-v0-teams-team-rosters-roster-users" title="Permalink to this definition"></a></dt>
<dd><p>Add user to a roster for a team. On successful creation, returns that user&#8217;s information.
This includes id, contacts, etc, similar to the /api/v0/users GET endpoint.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/v0/teams/team-foo/rosters/roster-foo/users</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;example.image.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_zone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Roster user added</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Missing &#8220;name&#8221; parameter</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Invalid team/user or user is already in roster.</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-teams-team-rosters-roster-users-user">
<code class="descname">PUT </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}/users/{user}</code><a class="headerlink" href="#put--api-v0-teams-team-rosters-roster-users-user" title="Permalink to this definition"></a></dt>
<dd><p>Put a user into/out of rotation within a given roster</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/v0/api/teams/team_foo/rosters/best_coast/users/user1</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span><span class="nt">&quot;in_rotation&quot;</span><span class="p">:</span> <span class="kc">false</span><span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[]</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; no error, user status udpated.</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; invalid request, missing field &#8220;in_rotation&#8221;.</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-teams-team-rosters-roster-users-user">
<code class="descname">DELETE </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}/users/{user}</code><a class="headerlink" href="#delete--api-v0-teams-team-rosters-roster-users-user" title="Permalink to this definition"></a></dt>
<dd><p>Delete user from roster</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/v0/api/teams/team_foo/rosters/best_coast/users/user1</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[]</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; no error, user deleted from roster.</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; roster not found.</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-rosters-roster-schedules">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}/schedules</code><a class="headerlink" href="#get--api-v0-teams-team-rosters-roster-schedules" title="Permalink to this definition"></a></dt>
<dd><p>Get schedules for a given roster. Information on schedule attributes is detailed
in the schedules POST endpoint documentation. Schedules can be filtered with
the following parameters passed in the query string:</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first last simple">
<li><strong>id</strong> &#8211; id of the schedule</li>
<li><strong>id__eq</strong> &#8211; id of the schedule</li>
<li><strong>id__gt</strong> &#8211; id greater than</li>
<li><strong>id__ge</strong> &#8211; id greater than or equal</li>
<li><strong>id__lt</strong> &#8211; id less than</li>
<li><strong>id__le</strong> &#8211; id less than or equal</li>
<li><strong>name</strong> &#8211; schedule name</li>
<li><strong>name__eq</strong> &#8211; schedule name</li>
<li><strong>name__contains</strong> &#8211; schedule name contains param</li>
<li><strong>name__startswith</strong> &#8211; schedule name starts with param</li>
<li><strong>name__endswith</strong> &#8211; schedule name ends with param</li>
<li><strong>role</strong> &#8211; schedule role name</li>
<li><strong>role__eq</strong> &#8211; schedule role name</li>
<li><strong>role__contains</strong> &#8211; schedule role name contains param</li>
<li><strong>role__startswith</strong> &#8211; schedule role name starts with param</li>
<li><strong>role__endswith</strong> &#8211; schedule role name ends with param</li>
<li><strong>team</strong> &#8211; schedule team name</li>
<li><strong>team__eq</strong> &#8211; schedule team name</li>
<li><strong>team__contains</strong> &#8211; schedule team name contains param</li>
<li><strong>team__startswith</strong> &#8211; schedule team name starts with param</li>
<li><strong>team__endswith</strong> &#8211; schedule team name ends with param</li>
<li><strong>team_id</strong> &#8211; id of the schedule&#8217;s team</li>
<li><strong>roster_id</strong> &#8211; id of the schedule&#8217;s roster</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo/rosters/roster-foo/schedules</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">259200</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">2065</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;role_id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;roster&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;roster_id&quot;</span><span class="p">:</span> <span class="mi">2922</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;team_id&quot;</span><span class="p">:</span> <span class="mi">2121</span><span class="p">,</span>
<span class="nt">&quot;timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams-team-rosters-roster-schedules">
<code class="descname">POST </code><code class="descname">/api/v0/teams/{team}/rosters/{roster}/schedules</code><a class="headerlink" href="#post--api-v0-teams-team-rosters-roster-schedules" title="Permalink to this definition"></a></dt>
<dd><p>Schedule create endpoint. Schedules are templates for the auto-scheduler to follow that define
how it should populate a certain period of time. This template is followed repeatedly to
populate events on a team&#8217;s calendar. Schedules are associated with a roster, which defines
the pool of users that the scheduler selects from. Similarly, the schedule&#8217;s role indicates
the role that the populated events shoud have. The <code class="docutils literal"><span class="pre">auto_populate_threshold</span></code> parameter
defines how far into the future the scheduler populates.</p>
<p>Finally, each schedule has a list of events, each defining <code class="docutils literal"><span class="pre">start</span></code> and <code class="docutils literal"><span class="pre">duration</span></code>. <code class="docutils literal"><span class="pre">start</span></code>
represents an offset from Sunday at 00:00 in the team&#8217;s scheduling timezone, in seconds. For
example, denote DAY and HOUR as the number of seconds in a day/hour, respectively. An
event with <code class="docutils literal"><span class="pre">start</span></code> of (DAY + 9 * HOUR) starts on Monday, at 9:00 am. Duration is also given
in seconds.</p>
<p>The scheduler will start at Sunday 00:00 in the team&#8217;s scheduling timezone, choose a user,
and populate events on the calendar according to the offsets defined in the events list.
It then repeats this process, moving to the next Sunday 00:00 after the events it has
created.</p>
<p><code class="docutils literal"><span class="pre">advanced_mode</span></code> acts as a hint to the frontend on how the schedule should be displayed,
defining whether the advanced mode toggle on the schedule edit action should be set on or off.
Because of how the frontend displays simple schedules, a schedule can only have advanced_mode = 0
if its events have one of 4 formats:</p>
<ol class="arabic simple">
<li>One event that is one week long</li>
<li>One event that is two weeks long</li>
<li>Seven events that are 12 hours long</li>
<li>Fourteen events that are 12 hours long</li>
</ol>
<p>See below for sample JSON requests.</p>
<p>Assume these schedules&#8217; team defines US/Pacific as its scheduling timezone.</p>
<p>Weekly 7*24 shift that starts at Monday 6PM PST:</p>
<div class="highlight-javascript"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s1">&#39;role&#39;</span><span class="o">:</span> <span class="s1">&#39;primary&#39;</span>
<span class="s1">&#39;auto_populate_threshold&#39;</span><span class="o">:</span> <span class="mi">21</span><span class="p">,</span>
<span class="s1">&#39;events&#39;</span><span class="o">:</span><span class="p">[</span>
<span class="p">{</span><span class="s1">&#39;start&#39;</span><span class="o">:</span> <span class="nx">SECONDS_IN_A_DAY</span> <span class="o">+</span> <span class="mi">18</span> <span class="o">*</span> <span class="nx">SECONDS_IN_AN_HOUR</span><span class="p">,</span>
<span class="s1">&#39;duration&#39;</span><span class="o">:</span> <span class="nx">SECONDS_IN_A_WEEK</span><span class="p">}</span>
<span class="p">],</span>
<span class="s1">&#39;advanced_mode&#39;</span><span class="o">:</span> <span class="mi">0</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Weekly 7*12 shift that starts at Monday 8AM PST:</p>
<div class="highlight-javascript"><div class="highlight"><pre><span></span><span class="p">{</span>
<span class="s1">&#39;role&#39;</span><span class="o">:</span> <span class="s1">&#39;oncall&#39;</span><span class="p">,</span>
<span class="s1">&#39;events&#39;</span><span class="o">:</span><span class="p">[</span>
<span class="p">{</span><span class="s1">&#39;start&#39;</span><span class="o">:</span> <span class="nx">SECONDS_IN_A_DAY</span> <span class="o">+</span> <span class="mi">8</span> <span class="o">*</span> <span class="nx">SECONDS_IN_AN_HOUR</span><span class="p">,</span>
<span class="s1">&#39;duration&#39;</span><span class="o">:</span> <span class="mi">12</span> <span class="o">*</span> <span class="nx">SECONDS_IN_AN_HOUR</span><span class="p">},</span>
<span class="p">{</span><span class="s1">&#39;start&#39;</span><span class="o">:</span> <span class="mi">2</span> <span class="o">*</span> <span class="nx">SECONDS_IN_A_DAY</span> <span class="o">+</span> <span class="mi">8</span> <span class="o">*</span> <span class="nx">SECONDS_IN_AN_HOUR</span><span class="p">,</span>
<span class="s1">&#39;duration&#39;</span><span class="o">:</span> <span class="mi">12</span> <span class="o">*</span> <span class="nx">SECONDS_IN_AN_HOUR</span><span class="p">}</span> <span class="p">...</span> <span class="o">*</span><span class="mi">5</span> <span class="nx">more</span><span class="o">*</span>
<span class="p">],</span>
<span class="s1">&#39;advanced_mode&#39;</span><span class="o">:</span> <span class="mi">1</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example Request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/v0/teams/team-foo/rosters/roster-foo/schedules</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="s2">&quot;21&quot;</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">604800</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">129600</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">2221</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Successful schedule create. Response contains created schedule&#8217;s id.</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Missing required parameters</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Invalid roster specified</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-teams-team-services">
<code class="descname">GET </code><code class="descname">/api/v0/teams/{team}/services</code><a class="headerlink" href="#get--api-v0-teams-team-services" title="Permalink to this definition"></a></dt>
<dd><p>Get list of services mapped to a team</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/teams/team-foo/services</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;service-foo&quot;</span><span class="p">,</span>
<span class="s2">&quot;service-bar&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-teams-team-services">
<code class="descname">POST </code><code class="descname">/api/v0/teams/{team}/services</code><a class="headerlink" href="#post--api-v0-teams-team-services" title="Permalink to this definition"></a></dt>
<dd><p>Create team to service mapping. Takes an object defining &#8220;name&#8221;, then maps
that service to the team specified in the URL. Note that this endpoint does
not create a service; it expects this service to already exist.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/teams/team-foo/services</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;service-foo&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">Created</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Successful create</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Mapping creation failed; Possible errors: Invalid service/team name,
service already mapped to the team, service mapped to another team</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-teams-team-services-service">
<code class="descname">DELETE </code><code class="descname">/api/v0/teams/{team}/services/{service}</code><a class="headerlink" href="#delete--api-v0-teams-team-services-service" title="Permalink to this definition"></a></dt>
<dd><p>Delete service team mapping. Only allowed for team admins.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/teams/team-foo/services/service-foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Team-service mapping not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="api-v0-schedules">
<h2>/api/v0/schedules<a class="headerlink" href="#api-v0-schedules" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-schedules-schedule_id">
<code class="descname">GET </code><code class="descname">/api/v0/schedules/{schedule_id}</code><a class="headerlink" href="#get--api-v0-schedules-schedule_id" title="Permalink to this definition"></a></dt>
<dd><p>Get schedule information. Detailed information on schedule parameters is provided in the
POST method for /api/v0/team/{team_name}/rosters/{roster_name}/schedules.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/schedules/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="mi">30</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">259200</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">0</span>
<span class="p">}</span>
<span class="p">],</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;role_id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;roster&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;roster_id&quot;</span><span class="p">:</span> <span class="mi">2922</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;asdf&quot;</span><span class="p">,</span>
<span class="nt">&quot;team_id&quot;</span><span class="p">:</span> <span class="mi">2121</span><span class="p">,</span>
<span class="nt">&quot;timezone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-schedules-schedule_id">
<code class="descname">PUT </code><code class="descname">/api/v0/schedules/{schedule_id}</code><a class="headerlink" href="#put--api-v0-schedules-schedule_id" title="Permalink to this definition"></a></dt>
<dd><p>Update a schedule. Allows editing of role, team, roster, auto_populate_threshold,
events, and advanced_mode. Only allowed for team admins. Note that simple mode
schedules must conform to simple schedule restrictions (described in documentation
for the /api/v0/team/{team_name}/rosters/{roster_name}/schedules GET endpoint).
This is checked on both &#8220;events&#8221; and &#8220;advanced_mode&#8221; edits.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/api/v0/schedules/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;roster&quot;</span><span class="p">:</span> <span class="s2">&quot;roster-bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;auto_populate_threshold&quot;</span><span class="p">:</span> <span class="mi">28</span><span class="p">,</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
<span class="nt">&quot;duration&quot;</span><span class="p">:</span> <span class="mi">100</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="s2">&quot;advanced_mode&quot;</span><span class="p">:</span> <span class="mi">1</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-schedules-schedule_id">
<code class="descname">DELETE </code><code class="descname">/api/v0/schedules/{schedule_id}</code><a class="headerlink" href="#delete--api-v0-schedules-schedule_id" title="Permalink to this definition"></a></dt>
<dd><p>Delete a schedule by id. Only allowed for team admins.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/schedules/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Schedule not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-schedules-schedule_id-populate">
<code class="descname">POST </code><code class="descname">/api/v0/schedules/{schedule_id}/populate</code><a class="headerlink" href="#post--api-v0-schedules-schedule_id-populate" title="Permalink to this definition"></a></dt>
<dd><p>Run the scheduler on demand from a given point in time. Deletes existing schedule events if applicable.
Given the <code class="docutils literal"><span class="pre">start</span></code> param, this will find the first schedule start time after <code class="docutils literal"><span class="pre">start</span></code>, then populate out
to the schedule&#8217;s auto_populate_threshold. It will also clear the calendar of any events associated
with the chosen schedule from the start of the first event it created onward. For example, if <cite>start</cite>
is Monday, May 1 and the chosen schedule starts on Wednesday, this will create events starting from
Wednesday, May 3, and delete any events that start after May 3 that are associated with the schedule.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful populate</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Validation checks failed</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="api-v0-services">
<h2>/api/v0/services<a class="headerlink" href="#api-v0-services" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-services">
<code class="descname">GET </code><code class="descname">/api/v0/services</code><a class="headerlink" href="#get--api-v0-services" title="Permalink to this definition"></a></dt>
<dd><p>Find services, filtered by params</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first last simple">
<li><strong>id</strong> &#8211; id of the service</li>
<li><strong>id__eq</strong> &#8211; id of the service</li>
<li><strong>id__gt</strong> &#8211; id greater than</li>
<li><strong>id__ge</strong> &#8211; id greater than or equal</li>
<li><strong>id__lt</strong> &#8211; id less than</li>
<li><strong>id__le</strong> &#8211; id less than or equal</li>
<li><strong>name</strong> &#8211; service name</li>
<li><strong>name__eq</strong> &#8211; service name</li>
<li><strong>name__contains</strong> &#8211; service name contains param</li>
<li><strong>name__startswith</strong> &#8211; service name starts with param</li>
<li><strong>name__endswith</strong> &#8211; service name ends with param</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/services?name__startswith=service</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;service-foo&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-services-service">
<code class="descname">GET </code><code class="descname">/api/v0/services/{service}</code><a class="headerlink" href="#get--api-v0-services-service" title="Permalink to this definition"></a></dt>
<dd><p>Get service id by name</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/services/service-foo</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;service-foo&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-services-service">
<code class="descname">PUT </code><code class="descname">/api/v0/services/{service}</code><a class="headerlink" href="#put--api-v0-services-service" title="Permalink to this definition"></a></dt>
<dd><p>Change name for a service. Currently unused/debug only.</p>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-services-service">
<code class="descname">DELETE </code><code class="descname">/api/v0/services/{service}</code><a class="headerlink" href="#delete--api-v0-services-service" title="Permalink to this definition"></a></dt>
<dd><p>Delete a service. Currently unused/debug only.</p>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-services-service-oncall-role">
<code class="descname">GET </code><code class="descname">/api/v0/services/{service}/oncall/{role}</code><a class="headerlink" href="#get--api-v0-services-service-oncall-role" title="Permalink to this definition"></a></dt>
<dd><p>Get the current user on-call for a given service/role. Returns event start/end, contact info,
and user name.</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/services/service-foo/oncall/primary</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1495695600</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1495263600</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-services-service-teams">
<code class="descname">GET </code><code class="descname">/api/v0/services/{service}/teams</code><a class="headerlink" href="#get--api-v0-services-service-teams" title="Permalink to this definition"></a></dt>
<dd><p>Get list of team mapped to a service</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/services/service-foo/teams</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;team-foo&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
</div>
<div class="section" id="api-v0-roles">
<h2>/api/v0/roles<a class="headerlink" href="#api-v0-roles" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-roles">
<code class="descname">GET </code><code class="descname">/api/v0/roles</code><a class="headerlink" href="#get--api-v0-roles" title="Permalink to this definition"></a></dt>
<dd><p>Role search.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/roles?name__startswith=pri</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;display_order&quot;</span><span class="p">:</span> <span class="mi">1</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first last simple">
<li><strong>id</strong> &#8211; id of the role</li>
<li><strong>id__eq</strong> &#8211; id of the role</li>
<li><strong>id__gt</strong> &#8211; id greater than</li>
<li><strong>id__ge</strong> &#8211; id greater than or equal</li>
<li><strong>id__lt</strong> &#8211; id less than</li>
<li><strong>id__le</strong> &#8211; id less than or equal</li>
<li><strong>name</strong> &#8211; role name</li>
<li><strong>name__eq</strong> &#8211; role name</li>
<li><strong>name__contains</strong> &#8211; role name contains param</li>
<li><strong>name__startswith</strong> &#8211; role name starts with param</li>
<li><strong>name__endswith</strong> &#8211; role name ends with param</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="api-v0-events">
<h2>/api/v0/events<a class="headerlink" href="#api-v0-events" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-events">
<code class="descname">GET </code><code class="descname">/api/v0/events</code><a class="headerlink" href="#get--api-v0-events" title="Permalink to this definition"></a></dt>
<dd><p>Search for events. Allows filtering based on a number of parameters, detailed below.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/events?team=foo-sre&amp;end__gt=1487466146&amp;role=primary</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1488441600</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1489132800</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;foo-sre&quot;</span><span class="p">,</span>
<span class="nt">&quot;link_id&quot;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="nt">&quot;schedule_id&quot;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Foo Icecream&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">187795</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1488441600</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1489132800</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;foo-sre&quot;</span><span class="p">,</span>
<span class="nt">&quot;link_id&quot;</span><span class="p">:</span> <span class="s2">&quot;8a8ae77b8c52448db60c8a701e7bffc2&quot;</span><span class="p">,</span>
<span class="nt">&quot;schedule_id&quot;</span><span class="p">:</span> <span class="mi">123</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Bar Apple&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">187795</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first simple">
<li><strong>team</strong> &#8211; team name</li>
<li><strong>user</strong> &#8211; user name</li>
<li><strong>role</strong> &#8211; role name</li>
<li><strong>id</strong> &#8211; id of the event</li>
<li><strong>start__gt</strong> &#8211; start time (unix timestamp) greater than</li>
<li><strong>start__ge</strong> &#8211; start time (unix timestamp) greater than or equal</li>
<li><strong>start__lt</strong> &#8211; start time (unix timestamp) less than</li>
<li><strong>start__le</strong> &#8211; start time (unix timestamp) less than or equal</li>
<li><strong>end__gt</strong> &#8211; end time (unix timestamp) greater than</li>
<li><strong>end__ge</strong> &#8211; end time (unix timestamp) greater than or equal</li>
<li><strong>end__lt</strong> &#8211; end time (unix timestamp) less than</li>
<li><strong>end__le</strong> &#8211; end time (unix timestamp) less than or equal</li>
<li><strong>role</strong> &#8211; role name</li>
<li><strong>role__eq</strong> &#8211; role name</li>
<li><strong>role__contains</strong> &#8211; role name contains param</li>
<li><strong>role__startswith</strong> &#8211; role name starts with param</li>
<li><strong>role__endswith</strong> &#8211; role name ends with param</li>
<li><strong>team</strong> &#8211; team name</li>
<li><strong>team__eq</strong> &#8211; team name</li>
<li><strong>team__contains</strong> &#8211; team name contains param</li>
<li><strong>team__startswith</strong> &#8211; team name starts with param</li>
<li><strong>team__endswith</strong> &#8211; team name ends with param</li>
<li><strong>user</strong> &#8211; user name</li>
<li><strong>user__eq</strong> &#8211; user name</li>
<li><strong>user__contains</strong> &#8211; user name contains param</li>
<li><strong>user__startswith</strong> &#8211; user name starts with param</li>
<li><strong>user__endswith</strong> &#8211; user name ends with param</li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; no error</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; bad request</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-events">
<code class="descname">POST </code><code class="descname">/api/v0/events</code><a class="headerlink" href="#post--api-v0-events" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint for creating event. Responds with event id for created event. Events must
specify the following parameters:</p>
<ul class="simple">
<li>start: Unix timestamp for the event start time (seconds)</li>
<li>end: Unix timestamp for the event end time (seconds)</li>
<li>user: Username for the event&#8217;s user</li>
<li>team: Name for the event&#8217;s team</li>
<li>role: Name for the event&#8217;s role</li>
</ul>
<p>All of these parameters are required.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/events</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1493667700</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">149368700</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">Created</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="mi">1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Event created</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Event validation checks failed</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Event creation failed: nonexistent role/event/team</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-events-event_id">
<code class="descname">GET </code><code class="descname">/api/v0/events/{event_id}</code><a class="headerlink" href="#get--api-v0-events-event_id" title="Permalink to this definition"></a></dt>
<dd><p>Get event by id.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/events/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1428336000</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nt">&quot;link_id&quot;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;schedule_id&quot;</span><span class="p">:</span> <span class="mi">4321</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1427731200</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; no error</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Event not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-events-event_id">
<code class="descname">PUT </code><code class="descname">/api/v0/events/{event_id}</code><a class="headerlink" href="#put--api-v0-events-event_id" title="Permalink to this definition"></a></dt>
<dd><p>Update an event by id; anyone can update any event within the team</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/api/v0/events/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1428336000</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1428338000</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;secondary&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful update</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-events-event_id">
<code class="descname">DELETE </code><code class="descname">/api/v0/events/{event_id}</code><a class="headerlink" href="#delete--api-v0-events-event_id" title="Permalink to this definition"></a></dt>
<dd><p>Delete an event by id, anyone on the team can delete that team&#8217;s events
<strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/events/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">403 Forbidden</a> &#8211; Delete not allowed; logged in user is not a team member</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Event not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-events-swap">
<code class="descname">POST </code><code class="descname">/api/v0/events/swap</code><a class="headerlink" href="#post--api-v0-events-swap" title="Permalink to this definition"></a></dt>
<dd><p>Swap events. Takes an object specifying the 2 events to be swapped. Swap can
take either single events or event sets, depending on the value of the
&#8220;linked&#8221; attribute. If &#8220;linked&#8221; is True, the API interprets the &#8220;id&#8221;
attribute as a link_id. Otherwise, it&#8217;s assumed to be an event_id. Note
that this allows swapping a single event with a linked event.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/events/swap</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;events&quot;</span><span class="p">:</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;linked&quot;</span><span class="p">:</span> <span class="kc">false</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="s2">&quot;da515a45e2b2467bbdc9ea3bc7826d36&quot;</span><span class="p">,</span>
<span class="nt">&quot;linked&quot;</span><span class="p">:</span> <span class="kc">true</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful swap</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Validation checks failed</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-events-override">
<code class="descname">POST </code><code class="descname">/api/v0/events/override</code><a class="headerlink" href="#post--api-v0-events-override" title="Permalink to this definition"></a></dt>
<dd><p>Override/substitute existing events. For example, if the current on-call is unexpectedly busy from 3-4, another
user can override that event for that time period and take over the shift. Override may delete or edit
existing events, and may create new events. The API&#8217;s response contains the information for all undeleted
events that were passed in the event_ids param, along with the events created by the override.</p>
<dl class="docutils">
<dt>Params:</dt>
<dd><ul class="first last simple">
<li><strong>start</strong>: Start time for the event substitution</li>
<li><strong>end</strong>: End time for event substitution</li>
<li><strong>event_ids</strong>: List of event ids to override</li>
<li><strong>user</strong>: User who will be taking over</li>
</ul>
</dd>
</dl>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/events/override</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1493677400</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1493678400</span><span class="p">,</span>
<span class="nt">&quot;event_ids&quot;</span><span class="p">:</span> <span class="p">[</span><span class="mi">1</span><span class="p">],</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1493678400</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">3</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1493677400</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-events-link">
<code class="descname">POST </code><code class="descname">/api/v0/events/link</code><a class="headerlink" href="#post--api-v0-events-link" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint for creating linked events. Responds with event ids for created events.
Linked events can be swapped in a group, and users are reminded only on the first event of a
linked series. Linked events have a link_id attribute containing a uuid. All events
with an equivalent link_id are considered &#8220;linked together&#8221; in a single set. Editing any single event
in the set will break the link for that event, clearing the link_id field. Otherwise, linked events behave
the same as any non-linked event.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">/api/v0/events/link</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1493667700</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">149368700</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1493677700</span><span class="p">,</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">149387700</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">Created</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">201 Created</a> &#8211; Event created</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Event validation checks failed</li>
<li><a class="reference external" href="http://tools.ietf.org/html/rfc4918#section-11.2">422 Unprocessable Entity</a> &#8211; Event creation failed: nonexistent role/event/team</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="api-v0-users">
<h2>/api/v0/users<a class="headerlink" href="#api-v0-users" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-users">
<code class="descname">GET </code><code class="descname">/api/v0/users</code><a class="headerlink" href="#get--api-v0-users" title="Permalink to this definition"></a></dt>
<dd><p>Get users filtered by params. Returns a list of user info objects for all users matching
filter parameters.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first last simple">
<li><strong>id</strong> &#8211; id of the user</li>
<li><strong>id__eq</strong> &#8211; id of the user</li>
<li><strong>id__gt</strong> &#8211; id greater than</li>
<li><strong>id__ge</strong> &#8211; id greater than or equal</li>
<li><strong>id__lt</strong> &#8211; id less than</li>
<li><strong>id__le</strong> &#8211; id less than or equal</li>
<li><strong>name</strong> &#8211; username</li>
<li><strong>name__eq</strong> &#8211; username</li>
<li><strong>name__contains</strong> &#8211; username contains param</li>
<li><strong>name__startswith</strong> &#8211; username starts with param</li>
<li><strong>name__endswith</strong> &#8211; username ends with param</li>
<li><strong>full_name</strong> &#8211; full name</li>
<li><strong>full_name__eq</strong> &#8211; username</li>
<li><strong>full_name__contains</strong> &#8211; full name contains param</li>
<li><strong>full_name__startswith</strong> &#8211; full name starts with param</li>
<li><strong>full_name__endswith</strong> &#8211; full name ends with param</li>
<li><strong>active</strong> &#8211; whether user has been deactivated (deleted)</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/events?team=foo-sre&amp;end__gt=1487466146&amp;role=primary</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;image.example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_zone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-users">
<code class="descname">POST </code><code class="descname">/api/v0/users</code><a class="headerlink" href="#post--api-v0-users" title="Permalink to this definition"></a></dt>
<dd><p>Create user. Currently used only in debug mode.</p>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-users-user_name">
<code class="descname">GET </code><code class="descname">/api/v0/users/{user_name}</code><a class="headerlink" href="#get--api-v0-users-user_name" title="Permalink to this definition"></a></dt>
<dd><p>Get user info by name. Retrieved fields can be filtered with the <code class="docutils literal"><span class="pre">fields</span></code>
query parameter. Valid fields:</p>
<ul class="simple">
<li>id - user id</li>
<li>name - username</li>
<li>contacts - user contact information</li>
<li>full_name - user&#8217;s full name</li>
<li>time_zone - user&#8217;s preferred display timezone</li>
<li>photo_url - URL of user&#8217;s thumbnail photo</li>
<li>active - bool indicating whether the user is active in Oncall. Users can
be marked inactive after leaving the company to preserve past event information.</li>
</ul>
<p>If no <code class="docutils literal"><span class="pre">fields</span></code> is provided, the endpoint defaults to returning all fields.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/users/jdoe</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;active&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;im&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;sms&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 111-111-1111&quot;</span>
<span class="p">},</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;photo_url&quot;</span><span class="p">:</span> <span class="s2">&quot;image.example.com&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_zone&quot;</span><span class="p">:</span> <span class="s2">&quot;US/Pacific&quot;</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="put">
<dt id="put--api-v0-users-user_name">
<code class="descname">PUT </code><code class="descname">/api/v0/users/{user_name}</code><a class="headerlink" href="#put--api-v0-users-user_name" title="Permalink to this definition"></a></dt>
<dd><p>Update user info. Allows edits to:</p>
<ul class="simple">
<li>contacts</li>
<li>name</li>
<li>full_name</li>
<li>time_zone</li>
<li>photo_url</li>
<li>active</li>
</ul>
<p>Takes an object specifying the new values of these attributes. <code class="docutils literal"><span class="pre">contacts</span></code> acts
slightly differently, specifying an object with the contact mode as key and new
values for that contact mode as values. Any contact mode not specified will be
unchanged. Similarly, any field not specified in the PUT will be unchanged.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/api/v0/users/jdoe</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;contacts&quot;</span><span class="p">:</span> <span class="p">{</span>
<span class="nt">&quot;call&quot;</span><span class="p">:</span> <span class="s2">&quot;+1 222-222-2222&quot;</span><span class="p">,</span>
<span class="nt">&quot;email&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe@example2.com&quot;</span>
<span class="p">}</span>
<span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;johndoe&quot;</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;Johnathan Doe&quot;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">204 No Content</a> &#8211; Successful edit</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; User not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-users-user_name">
<code class="descname">DELETE </code><code class="descname">/api/v0/users/{user_name}</code><a class="headerlink" href="#delete--api-v0-users-user_name" title="Permalink to this definition"></a></dt>
<dd><p>Delete user by name</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/users/jdoe</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; User not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-users-user_name-teams">
<code class="descname">GET </code><code class="descname">/api/v0/users/{user_name}/teams</code><a class="headerlink" href="#get--api-v0-users-user_name-teams" title="Permalink to this definition"></a></dt>
<dd><p>Get active teams by user name. Note that this does not return any deleted teams that
this user is a member of.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/users/jdoe/teams</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="s2">&quot;team-bar&quot;</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-users-user_name-notifications">
<code class="descname">GET </code><code class="descname">/api/v0/users/{user_name}/notifications</code><a class="headerlink" href="#get--api-v0-users-user_name-notifications" title="Permalink to this definition"></a></dt>
<dd><p>Get all notification settings for a user by name.</p>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/users/jdoe/notifications</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">21830</span><span class="p">,</span>
<span class="nt">&quot;mode&quot;</span><span class="p">:</span> <span class="s2">&quot;email&quot;</span><span class="p">,</span>
<span class="nt">&quot;only_if_involved&quot;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="nt">&quot;roles&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="s2">&quot;secondary&quot;</span><span class="p">,</span>
<span class="s2">&quot;shadow&quot;</span><span class="p">,</span>
<span class="s2">&quot;manager&quot;</span>
<span class="p">],</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_before&quot;</span><span class="p">:</span> <span class="mi">86400</span><span class="p">,</span>
<span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;oncall_reminder&quot;</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">21831</span><span class="p">,</span>
<span class="nt">&quot;mode&quot;</span><span class="p">:</span> <span class="s2">&quot;email&quot;</span><span class="p">,</span>
<span class="nt">&quot;only_if_involved&quot;</span><span class="p">:</span> <span class="kc">null</span><span class="p">,</span>
<span class="nt">&quot;roles&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="s2">&quot;secondary&quot;</span><span class="p">,</span>
<span class="s2">&quot;shadow&quot;</span><span class="p">,</span>
<span class="s2">&quot;manager&quot;</span>
<span class="p">],</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;time_before&quot;</span><span class="p">:</span> <span class="mi">604800</span><span class="p">,</span>
<span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;oncall_reminder&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
<dl class="post">
<dt id="post--api-v0-users-user_name-notifications">
<code class="descname">POST </code><code class="descname">/api/v0/users/{user_name}/notifications</code><a class="headerlink" href="#post--api-v0-users-user_name-notifications" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint to create notification settings for a user. Responds with an object denoting the created
setting&#8217;s id. Requests to create notification settings must define the following:</p>
<ul class="simple">
<li>team</li>
<li>roles</li>
<li>mode</li>
<li>type</li>
</ul>
<p>Users will be notified via <code class="docutils literal"><span class="pre">$mode</span></code> if a <code class="docutils literal"><span class="pre">$type</span></code> action occurs on the <code class="docutils literal"><span class="pre">$team</span></code> calendar that
modifies events having a role contained in <code class="docutils literal"><span class="pre">$roles</span></code>. In addition to these parameters,
notification settings must define one of <code class="docutils literal"><span class="pre">time_before</span></code> and <code class="docutils literal"><span class="pre">only_if_involved</span></code>, depending
on whether the notification type is a reminder or a notification. Reminders define a <code class="docutils literal"><span class="pre">time_before</span></code>
and reference the start/end time of an event that user is involved in. There are two reminder
types: &#8220;oncall_reminder&#8221; and &#8220;offcall_reminder&#8221;, referencing the start and end of on-call events,
respectively. <code class="docutils literal"><span class="pre">time_before</span></code> is specified in seconds and denotes how far in advance the user
should be reminded of an event.</p>
<p>Notifications are event-driven, and created when a team&#8217;s calendar is modified. By default,
the notification types are:</p>
<ul class="simple">
<li>event_created</li>
<li>event_edited</li>
<li>event_deleted</li>
<li>event_swapped</li>
<li>event_substituted</li>
</ul>
<p>Non-reminder settings must define <code class="docutils literal"><span class="pre">only_if_involved</span></code> which determines whether the user will
be notified on all actions of the given typ or only on ones in which they are involved. Note
that <code class="docutils literal"><span class="pre">time_before</span></code> must not be specified for a non-reminder setting, and <code class="docutils literal"><span class="pre">only_if_involved</span></code>
must not be specified for reminder settings.</p>
<p>An authoritative list of notification types can be obtained from the /api/v0/notification_types
GET endpoint, which also details whether the type is a reminder. This will obtain all
notification type data from the database, and is an absolute source of truth for Oncall.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">POST</span> <span class="nn">api/v0/events</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;roles&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;primary&quot;</span><span class="p">,</span> <span class="s2">&quot;secondary&quot;</span><span class="p">],</span>
<span class="nt">&quot;mode&quot;</span><span class="p">:</span> <span class="s2">&quot;email&quot;</span><span class="p">,</span>
<span class="nt">&quot;type&quot;</span><span class="p">:</span> <span class="s2">&quot;event_created&quot;</span><span class="p">,</span>
<span class="nt">&quot;only_if_involved&quot;</span><span class="p">:</span> <span class="kc">true</span>
<span class="p">}</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">201</span> <span class="ne">Created</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1234</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="get">
<dt id="get--api-v0-users-user_name-upcoming">
<code class="descname">GET </code><code class="descname">/api/v0/users/{user_name}/upcoming</code><a class="headerlink" href="#get--api-v0-users-user_name-upcoming" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint for retrieving a user&#8217;s upcoming shifts. Groups linked events into a single
entity, with the number of events indicated in the <code class="docutils literal"><span class="pre">num_events</span></code> attribute. Non-linked
events have <code class="docutils literal"><span class="pre">num_events</span> <span class="pre">=</span> <span class="pre">0</span></code>. Returns a list of event information for each of that
user&#8217;s upcoming shifts. Results can be filtered with the query string params below:</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name" colspan="2">Query Parameters:</th></tr>
<tr class="field-odd field"><td>&#160;</td><td class="field-body"><ul class="first last simple">
<li><strong>limit</strong> &#8211; The number of shifts to retrieve. Default is unlimited</li>
<li><strong>role</strong> &#8211; Filters results to return only shifts with the provided roles.</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><strong>Example request</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/users/jdoe/upcoming</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;end&quot;</span><span class="p">:</span> <span class="mi">1496264400</span><span class="p">,</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;id&quot;</span><span class="p">:</span> <span class="mi">169877</span><span class="p">,</span>
<span class="nt">&quot;link_id&quot;</span><span class="p">:</span> <span class="s2">&quot;7b3b96279bb24de8ac3fb7dbf06e5d1e&quot;</span><span class="p">,</span>
<span class="nt">&quot;num_events&quot;</span><span class="p">:</span> <span class="mi">7</span><span class="p">,</span>
<span class="nt">&quot;role&quot;</span><span class="p">:</span> <span class="s2">&quot;primary&quot;</span><span class="p">,</span>
<span class="nt">&quot;schedule_id&quot;</span><span class="p">:</span> <span class="mi">1788</span><span class="p">,</span>
<span class="nt">&quot;start&quot;</span><span class="p">:</span> <span class="mi">1496221200</span><span class="p">,</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
</div>
<div class="section" id="api-v0-notifications">
<h2>/api/v0/notifications<a class="headerlink" href="#api-v0-notifications" title="Permalink to this headline"></a></h2>
<dl class="put">
<dt id="put--api-v0-notifications-notification_id">
<code class="descname">PUT </code><code class="descname">/api/v0/notifications/{notification_id}</code><a class="headerlink" href="#put--api-v0-notifications-notification_id" title="Permalink to this definition"></a></dt>
<dd><p>Edit user notification settings. Allows editing of the following attributes:</p>
<ul class="simple">
<li>roles: list of role names</li>
<li>team: team name</li>
<li>mode: contact mode name</li>
<li><dl class="first docutils">
<dt>type: string defining what event to notify on. Types are detailed in notification</dt>
<dd>POST documentation</dd>
</dl>
</li>
<li>time_before: in units of seconds (if reminder setting)</li>
<li>only_if_involved: boolean (if notification setting)</li>
</ul>
<p><strong>Example request</strong></p>
<blockquote>
<div><div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">PUT</span> <span class="nn">/api/v0/events/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;team&quot;</span><span class="p">:</span> <span class="s2">&quot;team-bar&quot;</span><span class="p">,</span>
<span class="nt">&quot;mode&quot;</span><span class="p">:</span> <span class="s2">&quot;call&quot;</span><span class="p">,</span>
<span class="nt">&quot;user&quot;</span><span class="p">:</span> <span class="s2">&quot;asmith&quot;</span><span class="p">,</span>
<span class="nt">&quot;roles&quot;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&quot;secondary&quot;</span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
</div></blockquote>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful edit</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">400 Bad Request</a> &#8211; Validation checks failed.</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="delete">
<dt id="delete--api-v0-notifications-notification_id">
<code class="descname">DELETE </code><code class="descname">/api/v0/notifications/{notification_id}</code><a class="headerlink" href="#delete--api-v0-notifications-notification_id" title="Permalink to this definition"></a></dt>
<dd><p>Delete user notification settings by id.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">DELETE</span> <span class="nn">/api/v0/notifications/1234</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</pre></div>
</div>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Status Codes:</th><td class="field-body"><ul class="first last simple">
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">200 OK</a> &#8211; Successful delete</li>
<li><a class="reference external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">404 Not Found</a> &#8211; Notification setting not found</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
</div>
<div class="section" id="api-v0-notification-types">
<h2>/api/v0/notification_types<a class="headerlink" href="#api-v0-notification-types" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-notification_types">
<code class="descname">GET </code><code class="descname">/api/v0/notification_types</code><a class="headerlink" href="#get--api-v0-notification_types" title="Permalink to this definition"></a></dt>
<dd><p>Returns all notification types and whether they are reminder notifications.</p>
<p><strong>Example request:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/notification_types</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response:</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;oncall_reminder&quot;</span><span class="p">,</span>
<span class="nt">&quot;is_reminder&quot;</span><span class="p">:</span> <span class="mi">1</span>
<span class="p">}</span>
<span class="p">]</span>
</pre></div>
</div>
</dd></dl>
</div>
<div class="section" id="api-v0-search">
<h2>/api/v0/search<a class="headerlink" href="#api-v0-search" title="Permalink to this headline"></a></h2>
<dl class="get">
<dt id="get--api-v0-search">
<code class="descname">GET </code><code class="descname">/api/v0/search</code><a class="headerlink" href="#get--api-v0-search" title="Permalink to this definition"></a></dt>
<dd><p>Endpoint for searching for teams, services, users, and team users by keyword. Used for
typeaheads in the frontend. Team/service search is done using substring matching, while
user and team_user search is done with prefix matching. If no fields are provided, the
endpoint defaults to [&#8216;teams&#8217;, &#8216;services&#8217;]. A keyword parameter must be passed in the
query string.</p>
<p><strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/search?keyword=key</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;services&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;service-key&quot;</span><span class="p">:</span> <span class="s2">&quot;team-foo&quot;</span>
<span class="p">},</span>
<span class="p">{</span>
<span class="nt">&quot;service-key2&quot;</span><span class="p">:</span> <span class="s2">&quot;team-bar&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="s2">&quot;teams&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="s2">&quot;team-key&quot;</span><span class="p">,</span>
<span class="s2">&quot;team-key2&quot;</span>
<span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
<p>An example for user search:
<strong>Example request</strong></p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="nf">GET</span> <span class="nn">/api/v0/search?keyword=key&amp;fields=users</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
<span class="na">Host</span><span class="o">:</span> <span class="l">example.com</span>
</pre></div>
</div>
<p><strong>Example response</strong>:</p>
<div class="highlight-http"><div class="highlight"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">200</span> <span class="ne">OK</span>
<span class="na">Content-Type</span><span class="o">:</span> <span class="l">application/json</span>
<span class="p">{</span>
<span class="nt">&quot;users&quot;</span><span class="p">:</span>
<span class="p">[</span>
<span class="p">{</span>
<span class="nt">&quot;full_name&quot;</span><span class="p">:</span> <span class="s2">&quot;John Doe&quot;</span><span class="p">,</span>
<span class="nt">&quot;name&quot;</span><span class="p">:</span> <span class="s2">&quot;jdoe&quot;</span>
<span class="p">}</span>
<span class="p">]</span>
<span class="p">}</span>
</pre></div>
</div>
</dd></dl>
</div>
</div>
</div>
<div class="articleComments">
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="admin_guide.html" class="btn btn-neutral" title="Admin guide" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2017, The Iris team.
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'./',
VERSION:'1.0.0',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.StickyNav.enable();
});
</script>
</body>
</html>