blob: 4ef672d63b637321ff1452bfcd5bcfa836a262a3 [file] [log] [blame]
Ian Maxond00eca82018-10-05 17:29:55 -07001<!DOCTYPE html>
2<!--
Ian Maxon41b806c2019-03-07 15:58:20 -08003 | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/site/markdown/api.md at 2019-03-07
Ian Maxond00eca82018-10-05 17:29:55 -07004 | Rendered using Apache Maven Fluido Skin 1.7
5-->
6<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7 <head>
8 <meta charset="UTF-8" />
9 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
Ian Maxon41b806c2019-03-07 15:58:20 -080010 <meta name="Date-Revision-yyyymmdd" content="20190307" />
Ian Maxond00eca82018-10-05 17:29:55 -070011 <meta http-equiv="Content-Language" content="en" />
12 <title>AsterixDB &#x2013; HTTP API to AsterixDB</title>
13 <link rel="stylesheet" href="./css/apache-maven-fluido-1.7.min.css" />
14 <link rel="stylesheet" href="./css/site.css" />
15 <link rel="stylesheet" href="./css/print.css" media="print" />
16 <script type="text/javascript" src="./js/apache-maven-fluido-1.7.min.js"></script>
17
18 </head>
19 <body class="topBarDisabled">
20 <div class="container-fluid">
21 <div id="banner">
22 <div class="pull-left"><a href="./" id="bannerLeft"><img src="images/asterixlogo.png" alt="AsterixDB"/></a></div>
23 <div class="pull-right"></div>
24 <div class="clear"><hr/></div>
25 </div>
26
27 <div id="breadcrumbs">
28 <ul class="breadcrumb">
Ian Maxon41b806c2019-03-07 15:58:20 -080029 <li id="publishDate">Last Published: 2019-03-07</li>
30 <li id="projectVersion" class="pull-right">Version: 0.9.4</li>
Ian Maxond00eca82018-10-05 17:29:55 -070031 <li class="pull-right"><a href="index.html" title="Documentation Home">Documentation Home</a></li>
32 </ul>
33 </div>
34 <div class="row-fluid">
35 <div id="leftColumn" class="span2">
36 <div class="well sidebar-nav">
37 <ul class="nav nav-list">
38 <li class="nav-header">Get Started - Installation</li>
39 <li><a href="ncservice.html" title="Option 1: using NCService"><span class="none"></span>Option 1: using NCService</a></li>
40 <li><a href="ansible.html" title="Option 2: using Ansible"><span class="none"></span>Option 2: using Ansible</a></li>
41 <li><a href="aws.html" title="Option 3: using Amazon Web Services"><span class="none"></span>Option 3: using Amazon Web Services</a></li>
42 <li class="nav-header">AsterixDB Primer</li>
Ian Maxon41b806c2019-03-07 15:58:20 -080043 <li><a href="sqlpp/primer-sqlpp.html" title="Option 1: using SQL++"><span class="none"></span>Option 1: using SQL++</a></li>
44 <li><a href="aql/primer.html" title="Option 2: using AQL"><span class="none"></span>Option 2: using AQL</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070045 <li class="nav-header">Data Model</li>
46 <li><a href="datamodel.html" title="The Asterix Data Model"><span class="none"></span>The Asterix Data Model</a></li>
Ian Maxon41b806c2019-03-07 15:58:20 -080047 <li class="nav-header">Queries - SQL++</li>
Ian Maxond00eca82018-10-05 17:29:55 -070048 <li><a href="sqlpp/manual.html" title="The SQL++ Query Language"><span class="none"></span>The SQL++ Query Language</a></li>
49 <li><a href="sqlpp/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
Ian Maxon41b806c2019-03-07 15:58:20 -080050 <li class="nav-header">Queries - AQL</li>
51 <li><a href="aql/manual.html" title="The Asterix Query Language (AQL)"><span class="none"></span>The Asterix Query Language (AQL)</a></li>
52 <li><a href="aql/builtins.html" title="Builtin Functions"><span class="none"></span>Builtin Functions</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070053 <li class="nav-header">API/SDK</li>
54 <li class="active"><a href="#"><span class="none"></span>HTTP API</a></li>
55 <li><a href="csv.html" title="CSV Output"><span class="none"></span>CSV Output</a></li>
56 <li class="nav-header">Advanced Features</li>
Ian Maxon41b806c2019-03-07 15:58:20 -080057 <li><a href="aql/fulltext.html" title="Support of Full-text Queries"><span class="none"></span>Support of Full-text Queries</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070058 <li><a href="aql/externaldata.html" title="Accessing External Data"><span class="none"></span>Accessing External Data</a></li>
Ian Maxon41b806c2019-03-07 15:58:20 -080059 <li><a href="feeds/tutorial.html" title="Support for Data Ingestion"><span class="none"></span>Support for Data Ingestion</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070060 <li><a href="udf.html" title="User Defined Functions"><span class="none"></span>User Defined Functions</a></li>
Ian Maxon41b806c2019-03-07 15:58:20 -080061 <li><a href="aql/filters.html" title="Filter-Based LSM Index Acceleration"><span class="none"></span>Filter-Based LSM Index Acceleration</a></li>
62 <li><a href="aql/similarity.html" title="Support of Similarity Queries"><span class="none"></span>Support of Similarity Queries</a></li>
Ian Maxond00eca82018-10-05 17:29:55 -070063</ul>
64 <hr />
65 <div id="poweredBy">
66 <div class="clear"></div>
67 <div class="clear"></div>
68 <div class="clear"></div>
69 <div class="clear"></div>
70<a href="./" title="AsterixDB" class="builtBy"><img class="builtBy" alt="AsterixDB" src="images/asterixlogo.png" /></a>
71 </div>
72 </div>
73 </div>
74 <div id="bodyColumn" class="span10" >
75<!--
76 ! Licensed to the Apache Software Foundation (ASF) under one
77 ! or more contributor license agreements. See the NOTICE file
78 ! distributed with this work for additional information
79 ! regarding copyright ownership. The ASF licenses this file
80 ! to you under the Apache License, Version 2.0 (the
81 ! "License"); you may not use this file except in compliance
82 ! with the License. You may obtain a copy of the License at
83 !
84 ! http://www.apache.org/licenses/LICENSE-2.0
85 !
86 ! Unless required by applicable law or agreed to in writing,
87 ! software distributed under the License is distributed on an
88 ! "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
89 ! KIND, either express or implied. See the License for the
90 ! specific language governing permissions and limitations
91 ! under the License.
92 !-->
93<h1>HTTP API to AsterixDB</h1>
94<div class="section">
95<h2><a name="Table_of_Contents"></a><a name="toc" id="toc">Table of Contents</a></h2>
96<ul>
97
98<li><a href="#queryservice">Query Service API</a></li>
99<li><a href="#querystatus">Query Status API</a></li>
100<li><a href="#queryresult">Query Result API</a></li>
101</ul></div>
102<div class="section">
103<h2><a name="POST_.2Fquery.2Fservice_.5BBack_to_TOC.5D"></a><a name="queryservice" id="queryservice">POST /query/service</a><font size="4"> <a href="#toc">[Back to TOC]</a></font></h2>
104<p><b>Description</b> Returns result for query as JSON. The response is a JSON object that contains some result metadata along with either an embedded result or an opaque handle that can be used to navigate to the result (see the decription of the <tt>mode</tt> parameter for more details).</p>
105<p><b>Parameters</b></p>
106<ul>
107
108<li><tt>statement</tt> - Specifies at least one valid SQL++ statement to run. The statements need to be urlencoded. Required.</li>
109<li><tt>pretty</tt> - If the parameter <tt>pretty</tt> is given with the value <tt>true</tt>, the result will be indented. (Optional)</li>
110<li><tt>client_context_id</tt> - A user-defined sequence of characters that the API receives and returns unchanged. This can be used e.g. to match individual requests, jobs, and responses. Another option could be to use it for groups of requests if an application decides to put e.g. an group identifier into that field to route groups of responses to a particular response processor.</li>
111<li><tt>mode</tt> - Result delivery mode. Possible values are <tt>immediate</tt>, <tt>deferred</tt>, <tt>async</tt> (default: <tt>immediate</tt>). If the delivery mode is <tt>immediate</tt> the query result is returned with the response. If the delivery mode is <tt>deferred</tt> the response contains a handle to the <a href="#queryresult">result</a>. If the delivery mode is <tt>async</tt> the response contains a handle to the query&#x2019;s <a href="#querystatus">status</a>.</li>
112</ul>
113<p><b>Command (immediate result delivery)</b></p>
114
115<div>
116<div>
117<pre class="source">$ curl -v --data-urlencode &quot;statement=select 1;&quot; \
118 --data pretty=true \
119 --data client_context_id=xyz \
120 http://localhost:19002/query/service
121</pre></div></div>
122
123<p><b>Sample response</b></p>
124
125<div>
126<div>
127<pre class="source">&gt; POST /query/service HTTP/1.1
128&gt; Host: localhost:19002
129&gt; User-Agent: curl/7.43.0
130&gt; Accept: */*
131&gt; Content-Length: 57
132&gt; Content-Type: application/x-www-form-urlencoded
133&gt;
134&lt; HTTP/1.1 200 OK
135&lt; transfer-encoding: chunked
136&lt; connection: keep-alive
137&lt; content-type: application/json; charset=utf-8
138&lt;
139{
140 &quot;requestID&quot;: &quot;5f72e78c-482a-45bf-b174-6443c8273025&quot;,
141 &quot;clientContextID&quot;: &quot;xyz&quot;,
142 &quot;signature&quot;: &quot;*&quot;,
143 &quot;results&quot;: [ {
144 &quot;$1&quot; : 1
145 } ]
146 ,
147 &quot;status&quot;: &quot;success&quot;,
148 &quot;metrics&quot;: {
149 &quot;elapsedTime&quot;: &quot;20.263371ms&quot;,
150 &quot;executionTime&quot;: &quot;19.889389ms&quot;,
151 &quot;resultCount&quot;: 1,
152 &quot;resultSize&quot;: 15
153 }
154}
155</pre></div></div>
156
157<p><b>Command (<a name="deferred" id="deferred">deferred result delivery</a>)</b></p>
158
159<div>
160<div>
161<pre class="source">$ curl -v --data-urlencode &quot;statement=select 1;&quot; \
162 --data mode=deferred \
163 http://localhost:19002/query/service
164</pre></div></div>
165
166<p><b>Sample response</b></p>
167
168<div>
169<div>
170<pre class="source">&gt; POST /query/service HTTP/1.1
171&gt; Host: localhost:19002
172&gt; User-Agent: curl/7.43.0
173&gt; Accept: */*
174&gt; Content-Length: 37
175&gt; Content-Type: application/x-www-form-urlencoded
176&gt;
177&lt; HTTP/1.1 200 OK
178&lt; transfer-encoding: chunked
179&lt; connection: keep-alive
180&lt; content-type: application/json; charset=utf-8
181&lt;
182{
183 &quot;requestID&quot;: &quot;6df7afb4-5f83-49b6-8c4b-f11ec84c4d7e&quot;,
184 &quot;signature&quot;: &quot;*&quot;,
185 &quot;handle&quot;: &quot;http://localhost:19002/query/service/result/7-0&quot;,
186 &quot;status&quot;: &quot;success&quot;,
187 &quot;metrics&quot;: {
188 &quot;elapsedTime&quot;: &quot;12.270570ms&quot;,
189 &quot;executionTime&quot;: &quot;11.948343ms&quot;,
190 &quot;resultCount&quot;: 0,
191 &quot;resultSize&quot;: 0
192 }
193}
194</pre></div></div>
195
196<p><b>Command (<a name="async" id="async>">async result delivery</a>)</b></p>
197
198<div>
199<div>
200<pre class="source">$ curl -v --data-urlencode &quot;statement=select 1;&quot; \
201 --data mode=async \
202 http://localhost:19002/query/service
203</pre></div></div>
204
205<p><b>Sample response</b></p>
206
207<div>
208<div>
209<pre class="source">&gt; POST /query/service HTTP/1.1
210&gt; Host: localhost:19002
211&gt; User-Agent: curl/7.43.0
212&gt; Accept: */*
213&gt; Content-Length: 34
214&gt; Content-Type: application/x-www-form-urlencoded
215&gt;
216&lt; HTTP/1.1 200 OK
217&lt; transfer-encoding: chunked
218&lt; connection: keep-alive
219&lt; content-type: application/json; charset=utf-8
220&lt;
221{
222 &quot;requestID&quot;: &quot;c5858420-d821-4c0c-81a4-2364386827c2&quot;,
223 &quot;signature&quot;: &quot;*&quot;,
224 &quot;status&quot;: &quot;running&quot;,
225 &quot;handle&quot;: &quot;http://localhost:19002/query/service/status/9-0&quot;,
226 &quot;metrics&quot;: {
227 &quot;elapsedTime&quot;: &quot;9.727006ms&quot;,
228 &quot;executionTime&quot;: &quot;9.402282ms&quot;,
229 &quot;resultCount&quot;: 0,
230 &quot;resultSize&quot;: 0
231 }
232}
233</pre></div></div>
234</div>
235<div class="section">
236<h2><a name="GET_.2Fquery.2Fservice.2Fstatus_.5BBack_to_TOC.5D"></a><a name="querystatus" id="querystatus">GET /query/service/status</a><font size="4"> <a href="#toc">[Back to TOC]</a></font></h2>
237<p><b>Description</b> Returns status of an <tt>async</tt> query request. The response is a JSON object that has a similar structure to the responses for the <a href="#queryservice">/query/service</a> endpoint. Possible status values for the status are <tt>running</tt>, <tt>success</tt>, <tt>timeout</tt>, <tt>failed</tt>, and <tt>fatal</tt>. If the status value is <tt>success</tt>, the response also contains a handle to the <a href="#queryresult">result</a>. URLs for this endpoint are usually not constructed by the application, they are simply extracted from the <tt>handle</tt> field of the response to a request to the <a href="#queryservice">/query/service</a> endpoint.</p>
238<p><b>Command</b></p>
239<p>This example shows a request/reponse for the (opaque) status handle that was returned by the <a href="#async">async result delivery</a> example.</p>
240
241<div>
242<div>
243<pre class="source">$ curl -v http://localhost:19002/query/service/status/9-0
244</pre></div></div>
245
246<p><b>Sample response</b></p>
247
248<div>
249<div>
250<pre class="source">&gt; GET /query/service/status/9-0 HTTP/1.1
251&gt; Host: localhost:19002
252&gt; User-Agent: curl/7.43.0
253&gt; Accept: */*
254&gt;
255&lt; HTTP/1.1 200 OK
256&lt; transfer-encoding: chunked
257&lt; connection: keep-alive
258&lt; content-type: application/json; charset=utf-8
259&lt;
260{
261 &quot;status&quot;: &quot;success&quot;,
262 &quot;handle&quot;: &quot;http://localhost:19002/query/service/result/9-0&quot;
263}
264</pre></div></div>
265</div>
266<div class="section">
267<h2><a name="GET_.2Fquery.2Fservice.2Fresult_.5BBack_to_TOC.5D"></a><a name="queryresult" id="queryresult">GET /query/service/result</a><font size="4"> <a href="#toc">[Back to TOC]</a></font></h2>
268<p><b>Description</b> Returns result set for an <tt>async</tt> or <tt>deferred</tt> query request. The response is a plain result without a wrapping JSON object. URLs for this endpoint are usually not constructed by the application, they are simply extracted from the <tt>handle</tt> field of the response to a request to the <a href="#queryservice">/query/service</a> or the <a href="#querystatus">/query/service/status</a> endpoint.</p>
269<p><b>Command</b></p>
270<p>This example shows a request/reponse for the (opaque) result handle that was returned by the <a href="#deferred">deferred result delivery</a> example.</p>
271
272<div>
273<div>
274<pre class="source">$ curl -v http://localhost:19002/query/service/result/7-0
275</pre></div></div>
276
277<p><b>Sample response</b></p>
278
279<div>
280<div>
281<pre class="source">&gt; GET /query/service/result/7-0 HTTP/1.1
282&gt; Host: localhost:19002
283&gt; User-Agent: curl/7.43.0
284&gt; Accept: */*
285&gt;
286&lt; HTTP/1.1 200 OK
287&lt; transfer-encoding: chunked
288&lt; connection: keep-alive
289&lt; content-type: application/json
290&lt;
291[ { &quot;$1&quot;: 1 }
292 ]
293</pre></div></div></div>
294 </div>
295 </div>
296 </div>
297 <hr/>
298 <footer>
299 <div class="container-fluid">
300 <div class="row-fluid">
301<div class="row-fluid">Apache AsterixDB, AsterixDB, Apache, the Apache
302 feather logo, and the Apache AsterixDB project logo are either
303 registered trademarks or trademarks of The Apache Software
304 Foundation in the United States and other countries.
305 All other marks mentioned may be trademarks or registered
306 trademarks of their respective owners.
307 </div>
308 </div>
309 </div>
310 </footer>
311 </body>
312</html>