Everdo Help – Advanced /docs/advanced/ Recent content in Advanced on Everdo Help Hugo -- gohugo.io en-us Sun, 08 Nov 2020 00:00:00 +0000 Docs: Automated Backups /docs/advanced/automated-backups/ Wed, 31 Mar 2021 00:00:00 +0000 /docs/advanced/automated-backups/ <h2 id="overview">Overview</h2> <p>To back up the database while the app is running you need to use the <code>sqlite3</code> tool - the official client for working with SQlite databases.</p> <h2 id="setting-up-automated-sqlite-backups">Setting up automated SQLite backups</h2> <ol> <li>Create a backup script and make it executable.</li> <li>Test the script - make sure a backup is created and stored where you expect.</li> <li>Schedule the script to run periodically, for example as a cron job or as a scheduled task on Windows.</li> </ol> <p>Here is a simple backup script. You need to replace <code>/home/user</code> with you unix user directory.</p> <pre tabindex="0"><code>#!/bin/bash TIMESTAMP=$(date +%F_%T | tr &#39;:&#39; &#39;-&#39;) sqlite3 /home/user/.config/everdo/db &#34;.backup &#39;/home/user/.config/everdo/backups/db_backup_$TIMESTAMP.sqlite&#39;&#34; </code></pre><p>A more robust script that will retry the backup command up to 9 times if the first backup attempt fails. Credit to <a href="https://sweetgood.de">Christian</a>.</p> <pre tabindex="0"><code>#!/bin/bash counter=0 while [ $counter -lt 9 ] do /usr/bin/sqlite3 /home/user/.config/everdo/db &#34;.backup &#39;/home/user/.config/everdo/backups/db_backup_$(date +%F_%T | tr &#39;:&#39; &#39;-&#39;).sqlite&#39;&#34; return_value=$? if [ $return_value -eq 0 ]; then counter=9 else counter=$(( $counter + 1 )) fi done </code></pre> Docs: Data Directory /docs/advanced/home-directory/ Tue, 22 Mar 2022 00:00:00 +0000 /docs/advanced/home-directory/ <div class="alert alert-primary" role="alert"> This page only applies to the desktop app. The data directory is sandboxed and therefore not easily accessible in the mobile apps. </div> <p>Everdo stores data in a single directory on your computer. The location of this directory depends on your operating system, as shown in the table below.</p> <table> <thead> <tr> <th>OS</th> <th>Path</th> </tr> </thead> <tbody> <tr> <td>Linux</td> <td><code>~/.config/everdo</code></td> </tr> <tr> <td>macOS</td> <td><code>~/Library/Application Support/everdo</code></td> </tr> <tr> <td>Windows</td> <td><code>%USERPROFILE%\AppData\Roaming\Everdo</code></td> </tr> </tbody> </table> <p>Within the data directory, the following files may be of interest for backup or export purposes.</p> <table> <thead> <tr> <th>File contents</th> <th>Filename</th> <th>Use case</th> </tr> </thead> <tbody> <tr> <td>Application configuration file</td> <td><code>config.json</code></td> <td>Backup, adjust settings not available on the UI</td> </tr> <tr> <td>Main Sqlite database</td> <td><code>db</code></td> <td>Backup, make custom queries</td> </tr> <tr> <td>Product key</td> <td><code>everdo.key</code></td> <td>Backup</td> </tr> <tr> <td>ESS passphrase</td> <td><code>encryption-key</code></td> <td>Backup, copy to other clients as part of <a href="/docs/sync/ess/">ESS Sync setup</a></td> </tr> <tr> <td>ESS access token</td> <td><code>jwt</code></td> <td>Backup, destroy to sign out the computer</td> </tr> <tr> <td>Application error log</td> <td><code>error.log</code></td> <td>Crash diagnostics</td> </tr> <tr> <td>Keyboard shortcuts</td> <td><code>keyboard.json</code></td> <td>Backup, remove to reset shortcuts to defaults</td> </tr> </tbody> </table> <h2 id="backing-up-the-database">Backing up the database</h2> <p>It&rsquo;s always a good practice to backup your important data, and Everdo database is no exception.</p> <p>In order to perform a backup of the database, you need to identify the location of the data directory as explained on this page, then copy the <code>db</code> file to a different location, preferably on a removable disk or on a different computer. See <a href="/docs/advanced/automated-backups/">automated backups</a> for more detail.</p> Docs: Command Line Options /docs/advanced/cli-options/ Mon, 22 Mar 2021 00:00:00 +0000 /docs/advanced/cli-options/ <div class="alert alert-primary" role="alert"> This page only applies to the desktop app. </div> <h2 id="--datadir"><code>--dataDir</code></h2> <p>Specifies <a href="/docs/advanced/home-directory/">data directory</a> of the application. Default value depends on the operating system.</p> <p>The directory must exist and be writable by the current user. If the directory is empty, Everdo will populate it with initial data as required.</p> <p>For example:</p> <pre tabindex="0"><code>$ everdo --dataDir /home/alternativeDirectory </code></pre><h2 id="--multiinstance"><code>--multiInstance</code></h2> <p>Allows to run multiple instances of the application simultaneously. By default, Everdo does not let a second copy of itself run because sharing the database file is not possible. However by specifying different data directories and using this flag, you can run two copies of Everdo with different data.</p> <p>Example:</p> <pre tabindex="0"><code>everdo --multiInstance --dataDir /home/dir1 everdo --multiInstance --dataDir /home/dir2 </code></pre><h2 id="--loglevel"><code>--logLevel</code></h2> <p>Specifies the verbosity of logs that Everdo writes to standard output. Possible values: <code>ERROR</code>, <code>INFO</code>, <code>DEBUG</code>. Default: <code>ERROR</code>.</p> <p>Example: enable diagnostic logging</p> <pre tabindex="0"><code>everdo --logLevel DEBUG </code></pre><p>Example: write logs to file</p> <pre tabindex="0"><code>everdo --logLevel DEBUG &gt; log.txt </code></pre><h2 id="--config"><code>--config</code></h2> <p>Specifies the location of the <code>config.json</code> file where Everdo stores it&rsquo;s configuration.</p> <p>By default <code>config.json</code> is located in the <a href="/docs/advanced/home-directory/">data directory</a>.</p> <p>Example: create/use a config file in a specified location while using the default data directory for everything else.</p> <pre tabindex="0"><code>everdo --config /home/alternative_everdo_config.json </code></pre> Docs: API /docs/advanced/api/ Sun, 08 Nov 2020 00:00:00 +0000 /docs/advanced/api/ <div class="alert alert-primary" role="alert"> The Curl examples on this page have been tested in a Bash environment. Some adjustments may be necessary for them to run on Windows. </div> <h2 id="api-server-configuration">API server configuration</h2> <p>Before making requests, you need to make sure the API is up.</p> <ol> <li>Go to <em>Settings-&gt;API</em> and enable the API by checking a checkbox.</li> <li>Specify the IP address or hostname of the computer. To be able to communicate with the API from the same computer, you can specify <code>localhost</code> as the hostname. If you want the API to be accessible on the network, the specify the IP address on the local network. See <a href="/docs/sync/network//#determining-your-local-ip-address">determining the IP address</a>.</li> <li>In most cases you will not need to change the default port value, but sometimes it&rsquo;s necessary in case of a conflict.</li> </ol> <p>Once configured, press <em>Apply</em> and restart the app. Upon restart you should see a notification saying <em>Everdo API is up</em>.</p> <h2 id="creating-an-inbox-item">Creating an inbox item</h2> <p>This action will create a new item in inbox. You can omit the optional properties from the request model.</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-js" data-lang="js"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Action: POST /api/items </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Request Body: </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000;font-weight:bold">{</span> </span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;title&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Inbox item&#34;</span><span style="color:#000;font-weight:bold">,</span> </span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;note&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;Example note&#34;</span><span style="color:#000;font-weight:bold">,</span> <span style="color:#8f5902;font-style:italic">// Optional; Default = null </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#4e9a06">&#34;isFocused&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#204a87;font-weight:bold">true</span> <span style="color:#8f5902;font-style:italic">// Optional; Default = false </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000;font-weight:bold">}</span> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">// Response Body: </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000;font-weight:bold">{</span> </span></span><span style="display:flex;"><span> <span style="color:#4e9a06">&#34;id&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#4e9a06">&#34;B71C671F38144A9196D7D5C81B80BD7F&#34;</span> <span style="color:#8f5902;font-style:italic">// This is a UUID-v4 that identifies the item in the database </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> <span style="color:#4e9a06">&#34;createdOn&#34;</span><span style="color:#ce5c00;font-weight:bold">:</span> <span style="color:#0000cf;font-weight:bold">1582089151</span> <span style="color:#8f5902;font-style:italic">// Unix seconds </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span><span style="color:#000;font-weight:bold">}</span> </span></span></code></pre></div><h2 id="examples-with-curl">Examples with <code>curl</code></h2> <p>Try calling the API from the command line using the following snippets.</p> <div class="alert alert-primary" role="alert"> Make sure to specify the correct host, port and API key for your setup. </div> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ curl -k --header <span style="color:#4e9a06">&#34;Content-Type: application/json&#34;</span> <span style="color:#4e9a06">\ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --request POST <span style="color:#4e9a06">\ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --data <span style="color:#4e9a06">&#39;{&#34;title&#34;: &#34;Hello API&#34;, &#34;note&#34;: &#34;Example&#34; }&#39;</span> <span style="color:#4e9a06">\ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> https://localhost:11111/api/items?key<span style="color:#ce5c00;font-weight:bold">=</span>*** </span></span></code></pre></div><h2 id="a-command-line-script-to-add-items-to-inbox">A command line script to add items to inbox</h2> <p>Here is how to make a script that allows you to create <em>Inbox</em> items from the terminal without opening the app. For example,</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ inbox <span style="color:#4e9a06">&#34;New item&#34;</span> <span style="color:#4e9a06">&#34;Some Description&#34;</span> </span></span><span style="display:flex;"><span>$ inbox <span style="color:#4e9a06">&#34;New item without description&#34;</span> </span></span></code></pre></div><p>To create the <code>inbox</code> command:</p> <ol> <li>Create a file named <code>inbox</code> using the snippet code below.</li> <li>Make the script executable by running <code>chmod +x inbox</code> in the terminal</li> <li>Move the <code>inbox</code> file to <code>$PATH</code></li> </ol> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic">#!/bin/bash </span></span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"></span> </span></span><span style="display:flex;"><span><span style="color:#000">title</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">$1</span> </span></span><span style="display:flex;"><span><span style="color:#000">note</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#000">$2</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>data<span style="color:#ce5c00;font-weight:bold">()</span> </span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">{</span> </span></span><span style="display:flex;"><span> cat <span style="color:#4e9a06">&lt;&lt;EOF </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">{ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"> &#34;title&#34;: &#34;$title&#34;, </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"> &#34;note&#34;: &#34;$note&#34; </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">} </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06">EOF</span> </span></span><span style="display:flex;"><span><span style="color:#ce5c00;font-weight:bold">}</span> </span></span><span style="display:flex;"><span> </span></span><span style="display:flex;"><span>curl -ks --header <span style="color:#4e9a06">&#34;Content-Type: application/json&#34;</span> <span style="color:#4e9a06">\ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --request POST <span style="color:#4e9a06">\ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --data <span style="color:#4e9a06">&#34;</span><span style="color:#204a87;font-weight:bold">$(</span>data<span style="color:#204a87;font-weight:bold">)</span><span style="color:#4e9a06">&#34;</span> <span style="color:#4e9a06">\ </span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> https://localhost:11111/api/items?key<span style="color:#ce5c00;font-weight:bold">=</span>*** &gt; /dev/null </span></span></code></pre></div> <div class="alert alert-primary" role="alert"> Make sure to specify the correct host and api key in the script. </div> <div class="alert alert-primary" role="alert"> This provided script ignores the API response and will not report any communication errors. It should be extended to deal with such conditions if needed. </div> Docs: Exporting Data /docs/advanced/export/ Sun, 08 Nov 2020 00:00:00 +0000 /docs/advanced/export/ <p>The possible export options are:</p> <ul> <li>Copying a specific list as plain text</li> <li>JSON export of the whole database</li> <li>CSV export of the whole database</li> <li>Direct sqlite database access / query</li> </ul> <h2 id="copy-a-specific-list-as-text">Copy a specific list as text</h2> <div class="alert alert-primary" role="alert"> This feature only available in the desktop app. </div> <p>With this feature you can obtain a human-readable plain text representation of the current list of Everdo items. To copy the current view as text, use the corresponding button in the <em>Filter Bar</em> at the top of the list of items. As a result, the list will be copied to clipboard in a format similar to the following.</p> <pre><code>Next ---- [ ] Try using &quot;Export as CSV&quot; [ ] Try using &quot;Export as JSON&quot; Done ---- [x](Apr 2) Use &quot;Copy as Text&quot; </code></pre> <h2 id="json-export">JSON export</h2> <p>With JSON Export you can export all your data in a machine-readable format and move data between different devices. To perform a JSON export/import in the desktop app, use a corresponding menu option in the application&rsquo;s main menu.</p> <p>In the mobile apps, use the <em>Export</em> button in the app settings to export your data. To import data into the iOS app, share the JSON file from the Files app into Everdo. On Android, use the <em>Import JSON</em> button in the app settings.</p> <p>You can learn more about the data structure at the <a href="/docs/advanced/json/">Everdo JSON</a> page.</p> <div class="alert alert-primary" role="alert"> The Import function works by overwriting the contents of any existing items and creating the missing items. It doesn’t delete any data. The Import function also doesn’t consider item modification times or attempt to merge changes. It simply matches the ids of the imported items to with the ones already in the database and then (a) overwrites the matched items and (b) creates unmatched items. </div> <h2 id="csv-export">CSV export</h2> <div class="alert alert-primary" role="alert"> This feature only applies to the desktop app. </div> <p>The CSV format is useful to work with data in a spreadsheet application, such as Microsoft Excel or LibreOffice. To perform a CSV export, use a corresponding menu option in the application&rsquo;s main menu.</p> <h2 id="direct-database-access">Direct database access</h2> <div class="alert alert-primary" role="alert"> This only applies to the desktop app. </div> <p>You can query the actual Everdo database located in the <a href="/docs/advanced/home-directory/">home directory</a>. You will need an SQLite client application to do so.</p> <div class="alert alert-warning" role="alert"> <h4 class="alert-heading">Warning</h4> Always backup your database and use a <em>copy</em> of the database to perform any custom queries. It is <em>very easy</em> to corrupt a database by accidentally writing bad data, making the app crash on start. </div> Docs: JSON Data Format /docs/advanced/json/ Sun, 08 Nov 2020 00:00:00 +0000 /docs/advanced/json/ <div class="alert alert-warning" role="alert"> <h4 class="alert-heading">Warning</h4> <a href="/docs/advanced/home-directory/#backing-up-the-database">Backup you database</a> before trying to import any manually edited JSON. Otherwise you risk breaking the app by importing inconsistent data. You might not even notice something is wrong for a while. </div> <div class="alert alert-primary" role="alert"> <h4 class="alert-heading">Tip</h4> Make an export of your existing Everdo data to use it as an example while reading this document. This will make it easier you understand the structure of the import objects and provide concrete examples. </div> <h2 id="use-uuid-v4-for-the-id-field">Use UUID v4 for the <code>id</code> field</h2> <p>When creating new items via the import feature, you have to generate a random universally unique <code>id</code> for each new item and tag. When there&rsquo;s a collision, the import code silently overwrites the existing item. To avoid a collision, always use a random UUID (v4) generator when creating the import objects (unless you do want to update existing items).</p> <h2 id="list-of-fields-which-use-the-uuid-data-type">List of fields which use the UUID data type</h2> <ul> <li><code>id</code></li> <li><code>parent_id</code> (reference to the project&rsquo;s/notebook&rsquo;s <code>id</code>)</li> <li><code>contact_id</code> (reference to the contact tag&rsquo;s <code>id</code>)</li> </ul> <h2 id="uuid-formating">UUID formating</h2> <p><code>id</code>, <code>parent_id</code> and other <code>UUID</code> fields need to be specified as an uppercase string without dashes, as follows.</p> <pre><code>id: &quot;709632E58EF74A55A18E9347F24ED948&quot; </code></pre> <h2 id="timestamps">Timestamps</h2> <p>All timestamps are integers representing Unix time in seconds. Millisecond-valued timestamps will not work.</p> <h2 id="the-root-object">The root object</h2> <p>The <code>.json</code> file you&rsquo;ll import must contain a single object with two array properties - <code>tags</code> and <code>items</code>. Each array may contain zero or more elements.</p> <pre><code>{ &quot;items&quot;: [], &quot;tags&quot;: [] } </code></pre> <p>You only need to specify the items you wish to add or update. The import feature does not delete missing items or tags, so you can import a completely empty file without problem.</p> <h2 id="the-item-object">The item object</h2> <p>These fields are required for all items:</p> <ul> <li><code>id</code></li> <li><code>type</code></li> <li><code>list</code></li> <li><code>title</code></li> <li><code>created_on</code></li> <li><code>is_focused</code></li> <li><code>start_date</code> or <code>schedule</code> for scheduled items.</li> </ul> <div class="alert alert-primary" role="alert"> <h4 class="alert-heading">Note</h4> <ul> <li>Some combinations of <code>list</code> and <code>type</code> are invalid. For example you can&rsquo;t have a <strong>Project</strong> in the <strong>Inbox</strong> list.</li> <li>Some <code>list</code> values require specifying additional fields. For example, in a <strong>Scheduled</strong> item you also must at least specify a <strong>Start Date</strong>.</li> </ul> </div> <h2 id="type"><code>type</code></h2> <ul> <li><code>&quot;a&quot;</code>: action</li> <li><code>&quot;p&quot;</code>: project</li> <li><code>&quot;n&quot;</code>: note</li> <li><code>&quot;l&quot;</code>: notebook</li> </ul> <h2 id="list"><code>list</code></h2> <ul> <li><code>&quot;i&quot;</code>: inbox (actions only)</li> <li><code>&quot;a&quot;</code>: active/next (based on item type)</li> <li><code>&quot;m&quot;</code>: someday</li> <li><code>&quot;s&quot;</code>: scheduled (must also specify <code>start_date</code> or <code>schedule</code> field)</li> <li><code>&quot;w&quot;</code>: waiting</li> <li><code>&quot;d&quot;</code>: deleted</li> <li><code>&quot;r&quot;</code>: archived (must also specify <code>completed_on</code>)</li> </ul> <h2 id="completed_on"><code>completed_on</code></h2> <p>Completion timestamp (see Timestamps for format description). Null/undefined for incomplete items. Not null for completed items.</p> <h2 id="created_on"><code>created_on</code></h2> <p>Creation timestamp. Required.</p> <h2 id="is_focused"><code>is_focused</code></h2> <p>Values: <code>0</code> or <code>1</code>. Warning: <code>True</code> and <code>False</code> will not work.</p> <h2 id="energy"><code>energy</code></h2> <p>Energy estimate. Values: <code>null</code>, <code>1</code>, <code>2</code>, <code>3</code></p> <h2 id="time"><code>time</code></h2> <p>Time estimate. Value: number of minutes</p> <h2 id="due_date"><code>due_date</code></h2> <p>Optional due date. The timestamp&rsquo;s time must be set to 0 Hours, 0 Minutes, 0 Seconds.</p> <h2 id="start_date"><code>start_date</code></h2> <p>For one-time scheduled items only. The timestamp&rsquo;s time must be set to 0 Hours, 0 Minutes, 0 Seconds.</p> <h2 id="schedule"><code>schedule</code></h2> <p>For repeating items only. This is a complex object. Try exporting some pre-scheduled items to get an idea how it works.</p> <h2 id="recurrent_task_id"><code>recurrent_task_id</code></h2> <p>The &ldquo;template&rdquo; action that was used to create an instance of this specific repeating action.</p> <h2 id="contact_id"><code>contact_id</code></h2> <p>Optional contact tag to wait for. The value is tag id.</p> <h2 id="tags"><code>tags</code></h2> <p>An array of tag ids. Don&rsquo;t pass whole objects here, only string IDs.</p> <h2 id="position_child-position_parent-position_focus-position_global"><code>position_child</code>, <code>position_parent</code>, <code>position_focus</code>, <code>position_global</code></h2> <p>Item&rsquo;s position in a specific list:</p> <ul> <li>child: position in a list of all sub-items (project actions / notes)</li> <li>parent: position in a list of all parent items (projects/notebooks)</li> <li>focus: position in a global focus list</li> <li>global: position in a the list of all items</li> </ul> <h2 id="examples">Examples</h2> <div class="alert alert-primary" role="alert"> These examples only specify the minimum required properties. </div> <h3 id="create-an-inbox-action">Create an inbox action</h3> <pre><code>{ &quot;id&quot;: &quot;709632E58EF74A55A18E9347F24ED948&quot; , &quot;type&quot;: &quot;a&quot; &quot;title&quot;: &quot;Example Inbox Action&quot;, &quot;list&quot;: &quot;i&quot;, &quot;note&quot;: &quot;optional description&quot;, &quot;created_on&quot;: 1549619289, &quot;is_focused&quot; : 0 } </code></pre> <h3 id="create-an-empty-active-project">Create an empty active project</h3> <pre><code>{ &quot;id&quot;: &quot;B4F96775965F4F73A611365056301220&quot; , &quot;type&quot;: &quot;p&quot; &quot;title&quot;: &quot;Example Project&quot;, &quot;list&quot;: &quot;a&quot;, &quot;note&quot;: &quot;optional description&quot;, &quot;created_on&quot;: 1549619289, &quot;is_focused&quot; : 0 } </code></pre> <h3 id="create-a-project-action-active-and-focused">Create a project action (active and focused)</h3> <pre><code>{ &quot;id&quot;: &quot;B4F96775965F4F73A611365056301220&quot; , &quot;type&quot;: &quot;a&quot; &quot;list&quot;: &quot;a&quot;, &quot;title&quot;: &quot;Example Project Action&quot;, &quot;created_on&quot;: 1549619289, &quot;is_focused&quot; : 1, &quot;parent_id&quot;: &quot;709632E58EF74A55A18E9347F24ED948&quot; } </code></pre> <h3 id="create-a-tag-label">Create a tag (label)</h3> <pre><code>{ &quot;id&quot;: &quot;709632E58EF74A55A18E9347F24ED948&quot;, &quot;title&quot;: &quot;Example Tag&quot;, &quot;type&quot;: &quot;l&quot; } </code></pre>