<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>HTTP API on backd</title><link>https://fernandezvara.github.io/backd/docs/api/</link><description>Recent content in HTTP API on backd</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://fernandezvara.github.io/backd/docs/api/index.xml" rel="self" type="application/rss+xml"/><item><title>Documents</title><link>https://fernandezvara.github.io/backd/docs/api/documents/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fernandezvara.github.io/backd/docs/api/documents/</guid><description>&lt;p&gt;Every configured collection gets the same set of endpoints:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Method&lt;/th&gt;
 &lt;th&gt;Path&lt;/th&gt;
 &lt;th&gt;Behavior&lt;/th&gt;
 &lt;th&gt;Success&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/{collection}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Create a document&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;201&lt;/code&gt; + &lt;code&gt;Location&lt;/code&gt; + &lt;code&gt;ETag&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/{collection}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;List documents&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/{collection}/{id}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fetch one document&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;200&lt;/code&gt; + &lt;code&gt;ETag&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;PUT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/{collection}/{id}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Replace the whole document&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;200&lt;/code&gt; + &lt;code&gt;ETag&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;PATCH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/{collection}/{id}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Partial update (&lt;a href="https://www.rfc-editor.org/rfc/rfc7396"&gt;JSON Merge Patch&lt;/a&gt;)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;200&lt;/code&gt; + &lt;code&gt;ETag&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;DELETE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/{collection}/{id}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Delete the document&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;204&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/v1/{realm}/{database}/_batch&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;a href="#batch-writes"&gt;Create, replace, patch and delete atomically&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;An unknown realm, database, collection or &lt;code&gt;id&lt;/code&gt; returns &lt;code&gt;404 not_found&lt;/code&gt;. PUT and PATCH never create documents: there are no upserts, so create with POST and let the server choose the &lt;code&gt;id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In a realm with &lt;code&gt;auth: enabled&lt;/code&gt;, requests are decided by the collection&amp;rsquo;s &lt;a href="../../auth/rules/"&gt;access rules&lt;/a&gt;, or allowed outright with an &lt;a href="../../auth/api-keys/"&gt;API key&lt;/a&gt; in &lt;code&gt;Authorization: Bearer …&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Request bodies must be a single JSON object. Anything else returns &lt;code&gt;400 invalid_json&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="document-shape"&gt;Document shape&lt;a class="hd-anchor" href="#document-shape" aria-hidden="true"&gt;#&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Documents are returned as bare JSON objects:&lt;/p&gt;</description></item><item><title>Querying</title><link>https://fernandezvara.github.io/backd/docs/api/querying/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://fernandezvara.github.io/backd/docs/api/querying/</guid><description>&lt;p&gt;The list endpoint, &lt;code&gt;GET /v1/{realm}/{database}/{collection}&lt;/code&gt;, accepts these query parameters:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Parameter&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;where&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;—&lt;/td&gt;
 &lt;td&gt;JSON object with filter conditions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;order_by&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;id&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Comma-separated fields; prefix a field with &lt;code&gt;-&lt;/code&gt; for descending&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;limit&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Page size, &lt;code&gt;1&lt;/code&gt;–&lt;code&gt;100&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;skip&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Number of documents to skip&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;after&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;td&gt;The &lt;code&gt;next_cursor&lt;/code&gt; of the previous page: continues the list after it (see &lt;a href="#paging-with-a-cursor"&gt;Paging with a cursor&lt;/a&gt;). Can&amp;rsquo;t be combined with &lt;code&gt;skip&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;count&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;false&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;true&lt;/code&gt; adds &lt;code&gt;total&lt;/code&gt;, the number of documents matching &lt;code&gt;where&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;deleted&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;none&lt;/td&gt;
 &lt;td&gt;In a collection with &lt;a href="../documents/#soft-delete"&gt;soft delete&lt;/a&gt;: &lt;code&gt;only&lt;/code&gt; lists the deleted documents (the trash), &lt;code&gt;include&lt;/code&gt; both. Needs the &lt;code&gt;restore&lt;/code&gt; rule besides &lt;code&gt;read&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Each parameter may appear at most once. Any other parameter returns &lt;code&gt;400 invalid_query&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>