api_docs/docs/index.html
2020-02-05 21:08:54 +01:00

572 lines
23 KiB
HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>API Reference</title>
<style>
.highlight table td { padding: 5px; }
.highlight table pre { margin: 0; }
.highlight .gh {
color: #999999;
}
.highlight .sr {
color: #f6aa11;
}
.highlight .go {
color: #888888;
}
.highlight .gp {
color: #555555;
}
.highlight .gs {
}
.highlight .gu {
color: #aaaaaa;
}
.highlight .nb {
color: #f6aa11;
}
.highlight .cm {
color: #75715e;
}
.highlight .cp {
color: #75715e;
}
.highlight .c1 {
color: #75715e;
}
.highlight .cs {
color: #75715e;
}
.highlight .c, .highlight .cd {
color: #75715e;
}
.highlight .err {
color: #960050;
}
.highlight .gr {
color: #960050;
}
.highlight .gt {
color: #960050;
}
.highlight .gd {
color: #49483e;
}
.highlight .gi {
color: #49483e;
}
.highlight .ge {
color: #49483e;
}
.highlight .kc {
color: #66d9ef;
}
.highlight .kd {
color: #66d9ef;
}
.highlight .kr {
color: #66d9ef;
}
.highlight .no {
color: #66d9ef;
}
.highlight .kt {
color: #66d9ef;
}
.highlight .mf {
color: #ae81ff;
}
.highlight .mh {
color: #ae81ff;
}
.highlight .il {
color: #ae81ff;
}
.highlight .mi {
color: #ae81ff;
}
.highlight .mo {
color: #ae81ff;
}
.highlight .m, .highlight .mb, .highlight .mx {
color: #ae81ff;
}
.highlight .sc {
color: #ae81ff;
}
.highlight .se {
color: #ae81ff;
}
.highlight .ss {
color: #ae81ff;
}
.highlight .sd {
color: #e6db74;
}
.highlight .s2 {
color: #e6db74;
}
.highlight .sb {
color: #e6db74;
}
.highlight .sh {
color: #e6db74;
}
.highlight .si {
color: #e6db74;
}
.highlight .sx {
color: #e6db74;
}
.highlight .s1 {
color: #e6db74;
}
.highlight .s {
color: #e6db74;
}
.highlight .na {
color: #a6e22e;
}
.highlight .nc {
color: #a6e22e;
}
.highlight .nd {
color: #a6e22e;
}
.highlight .ne {
color: #a6e22e;
}
.highlight .nf {
color: #a6e22e;
}
.highlight .vc {
color: #ffffff;
}
.highlight .nn {
color: #ffffff;
}
.highlight .nl {
color: #ffffff;
}
.highlight .ni {
color: #ffffff;
}
.highlight .bp {
color: #ffffff;
}
.highlight .vg {
color: #ffffff;
}
.highlight .vi {
color: #ffffff;
}
.highlight .nv {
color: #ffffff;
}
.highlight .w {
color: #ffffff;
}
.highlight {
color: #ffffff;
}
.highlight .n, .highlight .py, .highlight .nx {
color: #ffffff;
}
.highlight .ow {
color: #f92672;
}
.highlight .nt {
color: #f92672;
}
.highlight .k, .highlight .kv {
color: #f92672;
}
.highlight .kn {
color: #f92672;
}
.highlight .kp {
color: #f92672;
}
.highlight .o {
color: #f92672;
}
</style>
<link href="stylesheets/screen-a1ce949a.css" rel="stylesheet" media="screen" />
<link href="stylesheets/print-bccf8c07.css" rel="stylesheet" media="print" />
<script src="javascripts/all-c5541673.js"></script>
</head>
<body class="index" data-languages="[&quot;shell&quot;,&quot;javascript&quot;]">
<a href="#" id="nav-button">
<span>
NAV
<img src="images/navbar-cad8cdcb.png" alt="Navbar" />
</span>
</a>
<div class="toc-wrapper">
<img src="images/logo-1e815a84.png" class="logo" alt="Logo" />
<div class="lang-selector">
<a href="#" data-language-name="shell">shell</a>
<a href="#" data-language-name="javascript">javascript</a>
</div>
<div class="search">
<input type="text" class="search" id="input-search" placeholder="Search">
</div>
<ul class="search-results"></ul>
<ul id="toc" class="toc-list-h1">
<li>
<a href="#introduction" class="toc-h1 toc-link" data-title="Introduction">Introduction</a>
</li>
<li>
<a href="#response-format" class="toc-h1 toc-link" data-title="Response format">Response format</a>
<ul class="toc-list-h2">
<li>
<a href="#fields" class="toc-h2 toc-link" data-title="Fields">Fields</a>
</li>
<li>
<a href="#types" class="toc-h2 toc-link" data-title="Types">Types</a>
</li>
</ul>
</li>
<li>
<a href="#libraries" class="toc-h1 toc-link" data-title="Libraries">Libraries</a>
<ul class="toc-list-h2">
<li>
<a href="#js" class="toc-h2 toc-link" data-title="JS">JS</a>
</li>
</ul>
</li>
<li>
<a href="#endpoints" class="toc-h1 toc-link" data-title="Endpoints">Endpoints</a>
<ul class="toc-list-h2">
<li>
<a href="#bakalari" class="toc-h2 toc-link" data-title="Bakalari">Bakalari</a>
</li>
</ul>
</li>
</ul>
<ul class="toc-footer">
<li><a href='https://discord.gg/dZtq4Qu'>Contact us for a Developer Key</a></li>
</ul>
</div>
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id='introduction'>Introduction</h1>
<p>Danbulant API is a wrapper around all of APIs available at danbulant.eu.
Most of endpoints currently don&#39;t require developer key, but for future use, we suggest still getting one. You won&#39;t do anything bad if you try to reach a free endpoint with developer key. You can contact us <a href="https://discord.gg/dZtq4Qu">here</a> on our discord server to get information about getting one.</p>
<h1 id='response-format'>Response format</h1><h2 id='fields'>Fields</h2>
<p>Response is currently always in JSON (but we might support XML and JSONP if there will be someone who might use it). Response always has these fields:</p>
<table><thead>
<tr>
<th>Field</th>
<th>Purpose</th>
<th>example content</th>
</tr>
</thead><tbody>
<tr>
<td>code</td>
<td>Contains the HTTP code</td>
<td><code>200</code></td>
</tr>
<tr>
<td>message</td>
<td>A string containing sample message.</td>
<td><code>Success, see type.</code></td>
</tr>
<tr>
<td>type</td>
<td>A string with the type of returned data</td>
<td><code>ping_response</code></td>
</tr>
</tbody></table>
<p>Response may have additional fields, such as <code>url</code> or <code>data</code>. These depends on the type.</p>
<h2 id='types'>Types</h2>
<p>Types that start with <code>e_</code> are <em>always</em> errors. The following type can be retrieved:</p>
<h3 id='e_invalid_key-key-only-endpoints'><code>e_invalid_key</code> | Key-only endpoints</h3>
<p>The key given is invalid and cannot be used.</p>
<h3 id='e_missing_query'><code>e_missing_query</code> | *</h3>
<p>Request lacks GET query string, which is required by the endpoint.</p>
<h3 id='e_invalid_query'><code>e_invalid_query</code> | *</h3>
<p>Request has invalid fields/missing fields/invalid values. See <code>message</code> in the response for more information.</p>
<h3 id='e_empty_response'><code>e_empty_response</code> | *</h3>
<p>Request succeeded, but the response provided by the endpoint was empty.</p>
<h3 id='e_cannot_get'><code>e_cannot_get</code> | *</h3>
<p>Request failed while trying to fetch external data.</p>
<h3 id='e_generic'><code>e_generic</code> | *</h3>
<p>Unknown error.</p>
<h3 id='e_ester_error-ester'><code>e_ester_error</code> | Ester</h3>
<p>An error occured inside Ester API. See <code>data</code> field (contains response from Ester API).</p>
<h3 id='e_bakalari_missing_school-bakalari'><code>e_bakalari_missing_school</code> | Bakalari</h3>
<p>Error occured during fetching data from the given domain, which usually means the schoold doesn&#39;t exists or has private API (currently no known school has private API).</p>
<h3 id='e_bakalari_missing_user-bakalari'><code>e_bakalari_missing_user</code> | Bakalari</h3>
<p>Request to school succeeded, but the user doesn&#39;t exists.</p>
<h3 id='e_missing_subreddit-reddit'><code>e_missing_subreddit</code> | Reddit</h3>
<p>Couldn&#39;t fetch subreddit. Subreddit may be NSFW (which are currently unsupported) or private or just simply doesn&#39;t exists.</p>
<h3 id='e_reddit_failed-reddit'><code>e_reddit_failed</code> | Reddit</h3>
<p>Reddit returned invalid response and/or error response.</p>
<h3 id='e_neko_type-nekos'><code>e_neko_type</code> | Nekos</h3>
<p>Unknown neko type.</p>
<hr>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Success, nothing to do"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"generic"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='generic'><code>generic</code> | *</h3>
<p>A response containing only the default 3 fields.</p>
<p><br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Success, see types"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"neko_list"</span><span class="p">,</span><span class="w">
</span><span class="s2">"types"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">"..."</span><span class="w"> </span><span class="p">]</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='neko_list-nekos'><code>neko_list</code> | Nekos</h3>
<p>List of available <code>neko</code> endpoints.</p>
<p><br>
<br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">404</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ICe API in development, see later"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ice_response"</span><span class="p">,</span><span class="w">
</span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='ice_response-ice'><code>ice_response</code> | Ice</h3>
<p>A generic bot response.</p>
<p><br>
<br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ice_http_code_response"</span><span class="p">,</span><span class="w">
</span><span class="s2">"http"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"standart"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
</span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"OK"</span><span class="p">,</span><span class="w">
</span><span class="s2">"description"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Standard response for successful HTTP requests. The actual response will depend on the request method used. In a GET request, the response will contain an entity corresponding to the requested resource. In a POST request, the response will contain an entity describing or containing the result of the action."</span><span class="p">,</span><span class="w">
</span><span class="s2">"choices"</span><span class="p">:</span><span class="w"> </span><span class="p">[]</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="s2">"source"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Wikipedia"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='ice_http_code_response-http'><code>ice_http_code_response</code> | Http</h3>
<p>A response containing information about given http code.</p>
<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">400</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Missing parameter code. Use it as /http/:code"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"e_ice_http_missing_code"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='ice_http_code_list-ice'><code>ice_http_code_list</code> | Ice</h3>
<p>A <em>planned</em> response to list all available HTTP codes.</p>
<p><br>
<br>
<br>
<br></p>
<h3 id='pushr_response-pushr'><code>pushr_response</code> | Pushr</h3>
<p>A response from Pushr API (danbulant.eu API acts as pass-through for this).</p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Success, see reddit"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"reddit_response"</span><span class="p">,</span><span class="w">
</span><span class="s2">"reddit"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"title"</span><span class="p">:</span><span class="w"> </span><span class="s2">"I really ininterested"</span><span class="p">,</span><span class="w">
</span><span class="s2">"image"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://imgur.com/tLBzS1h.jpg"</span><span class="p">,</span><span class="w">
</span><span class="s2">"author"</span><span class="p">:</span><span class="w"> </span><span class="s2">"nickjayr"</span><span class="p">,</span><span class="w">
</span><span class="s2">"authorIcon"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://www.redditstatic.com/avatars/avatar_default_17_0DD3BB.png"</span><span class="p">,</span><span class="w">
</span><span class="s2">"link"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://reddit.com/r/memes/comments/ey2hkb/i_really_ininterested/"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='redddit_response-reddit'><code>redddit_response</code> | Reddit</h3>
<p>Response from reddit API containing <code>reddit</code> object.</p>
<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Success, see response"</span><span class="p">,</span><span class="w">
</span><span class="s2">"path"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ester_response"</span><span class="p">,</span><span class="w">
</span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Čau!"</span><span class="p">,</span><span class="w">
</span><span class="s2">"user"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Daniel"</span><span class="p">,</span><span class="w">
</span><span class="s2">"id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1"</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="s2">"text"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Čau!"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='ester_response-ester'><code>ester_response</code> | Ester</h3>
<p>A generic response from Ester API.</p>
<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Success"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"bakalari_response"</span><span class="p">,</span><span class="w">
</span><span class="s2">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"verze"</span><span class="p">:</span><span class="w"> </span><span class="s2">"17/18.20191219"</span><span class="p">,</span><span class="w">
</span><span class="s2">"jmeno"</span><span class="p">:</span><span class="w"> </span><span class="s2">"[NAME HIDDEN]"</span><span class="p">,</span><span class="w">
</span><span class="s2">"typ"</span><span class="p">:</span><span class="w"> </span><span class="s2">"R"</span><span class="p">,</span><span class="w">
</span><span class="s2">"strtyp"</span><span class="p">:</span><span class="w"> </span><span class="s2">"rodič"</span><span class="p">,</span><span class="w">
</span><span class="s2">"skola"</span><span class="p">:</span><span class="w"> </span><span class="s2">"[SCHOOL REDACTED]"</span><span class="p">,</span><span class="w">
</span><span class="s2">"typskoly"</span><span class="p">:</span><span class="w"> </span><span class="s2">""</span><span class="p">,</span><span class="w">
</span><span class="s2">"trida"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0.A"</span><span class="p">,</span><span class="w">
</span><span class="s2">"rocnik"</span><span class="p">:</span><span class="w"> </span><span class="mi">-1</span><span class="p">,</span><span class="w">
</span><span class="s2">"moduly"</span><span class="p">:</span><span class="w"> </span><span class="s2">"*znamky*predvidac*rozvrh*predmety*vyuka*ukoly*akce*suplovani*absence*pololetni*prijate*odeslane*nastenka*setread*setok*komsend*komenslisty*komdel*"</span><span class="p">,</span><span class="w">
</span><span class="s2">"params"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
</span><span class="s2">"newmarkdays"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w">
</span><span class="p">},</span><span class="w">
</span><span class="s2">"result"</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="w">
</span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='bakalari_response-bakalari'><code>bakalari_response</code> | Bakalari</h3>
<p>Response from the <code>bakalari</code> API. Format depends on the bakalari response (e.g., try the desired info in browser to see, as danbulant.eu only converts xml to json).</p>
<p><br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br></p>
<blockquote>
<p>Example response:</p>
</blockquote>
<pre class="highlight json tab-json"><code><span class="p">{</span><span class="w">
</span><span class="s2">"code"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
</span><span class="s2">"message"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Success, see url"</span><span class="p">,</span><span class="w">
</span><span class="s2">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"image"</span><span class="p">,</span><span class="w">
</span><span class="s2">"url"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://i.imgur.com/wVUpmao.jpg"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre><h3 id='image'><code>image</code> | *</h3>
<p>Generic image response. The actual image is on adress inside the provided <code>url</code> field.</p>
<p><br>
<br>
<br>
<br>
<br></p>
<h1 id='libraries'>Libraries</h1><h2 id='js'>JS</h2>
<p><em>Currently unavailable, but planned.</em>
This library simplifies usage. It uses <code>got</code> under the hood for simplified request handling, and always returns promise.
Responses are just parsed JSON (as of now, but classes may be implemented in future).</p>
<h1 id='endpoints'>Endpoints</h1><h2 id='bakalari'>Bakalari</h2>
<blockquote>
<p>Example request</p>
</blockquote>
<pre class="highlight shell tab-shell"><code>curl <span class="s2">"https://api.danbulant.eu/v1/bakalari/rozvrh/user/domain.tld/SecretPassword123"</span>
</code></pre>
<p>Tries getting the info from Bakalari API.</p>
</div>
<div class="dark-box">
<div class="lang-selector">
<a href="#" data-language-name="shell">shell</a>
<a href="#" data-language-name="javascript">javascript</a>
</div>
</div>
</div>
</body>
</html>