{
  "name": "backtrace-labs/backtrace-morgue",
  "version": "0.1.4",
  "libraries": {
    "xv": "^1.1.25"
  },
  "title": "",
  "branch": "",
  "style": {
    "name": "Default",
    "componentSet": {
      "nav": "nav/BasicNav",
      "header": "header/BannerHeader",
      "article": "article/BasicArticle",
      "footer": "footer/BasicFooter"
    },
    "fontFamily": "-apple-system, BlinkMacSystemFont, sans-serif",
    "fontWeight": 400,
    "bold": 600,
    "lineHeight": 1.5,
    "typeScale": [
      72,
      48,
      24,
      20,
      16,
      14,
      12
    ],
    "monospace": "Menlo, monospace",
    "heading": {
      "fontFamily": null,
      "fontStyle": null,
      "fontWeight": 600,
      "lineHeight": 1.25,
      "textTransform": null,
      "letterSpacing": null
    },
    "h0": {},
    "h1": {},
    "h2": {},
    "h3": {},
    "h4": {},
    "h5": {},
    "h6": {},
    "alternativeText": {},
    "space": [
      0,
      8,
      16,
      32,
      48,
      64,
      96
    ],
    "layout": {
      "maxWidth": 1024,
      "centered": false
    },
    "colors": {
      "text": "#111",
      "background": "#fff",
      "primary": "#08e",
      "secondary": "#059",
      "highlight": "#e08",
      "border": "#ddd",
      "muted": "#eee"
    },
    "border": {
      "width": 1,
      "radius": 2
    },
    "link": {},
    "button": {
      "hover": {
        "boxShadow": "inset 0 0 0 999px rgba(0, 0, 0, .125)"
      }
    },
    "input": {},
    "body": {
      "margin": 0
    },
    "breakpoints": {
      "xs": "@media screen and (max-width:40em)",
      "sm": "@media screen and (min-width:40em)",
      "md": "@media screen and (min-width:52em)",
      "lg": "@media screen and (min-width:64em)"
    }
  },
  "content": [
    {
      "component": "nav",
      "links": [
        {
          "href": "https://github.com/backtrace-labs/backtrace-morgue",
          "text": "GitHub"
        },
        {
          "href": "https://npmjs.com/package/backtrace-morgue",
          "text": "npm"
        }
      ]
    },
    {
      "component": "header",
      "heading": "backtrace-morgue",
      "subhead": "Object store client.",
      "children": [
        {
          "component": "ui/TweetButton",
          "text": "backtrace-morgue: Object store client.",
          "url": null
        },
        {
          "component": "ui/GithubButton",
          "user": "backtrace-labs",
          "repo": "backtrace-morgue"
        }
      ],
      "text": "v1.7.1"
    },
    {
      "component": "article",
      "metadata": {
        "source": "github.readme"
      },
      "html": "<h1>morgue</h1>\n<h2>Installation</h2>\n<p>It is recommended to install <code>morgue</code> using <code>npm</code>.</p>\n<pre>npm <span class=\"hljs-keyword\">install </span><span class=\"hljs-keyword\">backtrace-morgue </span>-g</pre><p>If you working from the repository, then instead use the following command.</p>\n<pre>npm <span class=\"hljs-keyword\">install</span> -g</pre><p>This will install the <code>morgue</code> tool in your configured path. Refer to the\n<code>morgue --help</code> command to learn more.</p>\n<h2>Introduction</h2>\n<p><code>morgue</code> is a command-line interface to the Backtrace object store. It allows\nyou to upload, download and issue queries on objects with-in the object store.</p>\n<h2>Usage</h2>\n<h3>login</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue login <span class=\"hljs-params\">&lt;url&gt;</span></pre><p>The first step to using <code>morgue</code> is to log into a server.</p>\n<pre>$ morgue login <span class=\"hljs-string\">http:</span><span class=\"hljs-comment\">//localhost</span>\n<span class=\"hljs-string\">User:</span> sbahra\n<span class=\"hljs-string\">Password:</span> **************\n\nLogged <span class=\"hljs-keyword\">in</span>.</pre><p>At this point, you are able to issue queries.</p>\n<h3>describe</h3>\n<pre>Usage: morgue <span class=\"hljs-keyword\">describe</span> &lt;[&lt;universe&gt;/]<span class=\"hljs-keyword\">project</span>&gt; [<span class=\"hljs-keyword\">substring</span>]</pre><p>Requests a list and description of all metadata that can be queried against.</p>\n<h4>Example</h4>\n<pre>$ morgue describe bidder uname\n              uname<span class=\"hljs-selector-class\">.machine</span>: machine hardware name\n              uname<span class=\"hljs-selector-class\">.release</span>: kernel release\n              uname<span class=\"hljs-selector-class\">.sysname</span>: kernel name\n              uname<span class=\"hljs-selector-class\">.version</span>: kernel version</pre><h3>get</h3>\n<pre>Usage: morgue get &lt;<span class=\"hljs-meta\">[&lt;universe&gt;/]project&gt; [options] &lt;object id&gt; [-o &lt;output file&gt;]</span></pre><p>Downloads the specified object from the Backtrace object store and prints\nto standard output. Optionally, output the file to disk.</p>\n<p>The following options are available:</p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>--resource=name</code></td>\n<td>Fetch the specified resource rather than the object.</td>\n</tr>\n</tbody>\n</table>\n<h3>put</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue put <span class=\"hljs-params\">&lt;[&lt;universe&gt;</span>/]project&gt; <span class=\"hljs-params\">&lt;file&gt;</span> <span class=\"hljs-params\">&lt;--format=btt|minidump|json|symbols&gt;</span> [options]</pre><p>Uploads object file to the Backtrace object store. User has the following options</p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>`--compression=gzip</td>\n<td>deflate`</td>\n<td>uploaded file is compressed</td>\n</tr>\n<tr>\n<td><code>--kv=key1:value1,key2:value2,...</code></td>\n<td>upload key-values</td>\n</tr>\n<tr>\n<td><code>--form_data</code></td>\n<td>upload file by multipart/form-data post request</td>\n</tr>\n</tbody>\n</table>\n<h3>modify</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue modify <span class=\"hljs-params\">&lt;[universe/]project&gt;</span> (<span class=\"hljs-params\">&lt;query&gt;</span>|<span class=\"hljs-params\">&lt;object&gt;</span> ...) [--set ...] [--clear ...]</pre><p>Modifies attributes of the given object in the manner specified.\nBoth options below may be specified more than once.</p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>--set</code></td>\n<td>Set the given <code>attribute=value</code> pair</td>\n</tr>\n<tr>\n<td><code>--clear</code></td>\n<td>Clear the given <code>attribute</code></td>\n</tr>\n</tbody>\n</table>\n<p>You are also able to modify multiple objects by specifying filters. The\n<code>--filter</code>, <code>--age</code> and <code>--time</code> arguments are accepted to modify.</p>\n<h4>Example</h4>\n<p>Set hostname to <code>fqdn.example.com</code> for object identifier 0.</p>\n<pre><span class=\"hljs-symbol\">$</span> morgue modify --<span class=\"hljs-keyword\">set</span> hostname=fqdn.example.com <span class=\"hljs-comment\">myproject 0</span></pre><p>Set custom attribute <code>reason</code> to <code>oom</code> for all crashes containing <code>memory_abort</code>.</p>\n<pre><span class=\"hljs-symbol\">$</span> morgue modify --<span class=\"hljs-keyword\">set</span> reason=oom <span class=\"hljs-comment\">--filter=callstack,regular-expression,memory_abort</span></pre><h3>attachment</h3>\n<pre>Usage: morgue attachment &lt;<span class=\"hljs-built_in\">add</span>|<span class=\"hljs-built_in\">get</span>|<span class=\"hljs-keyword\">list</span>|<span class=\"hljs-keyword\">delete</span>&gt; ...\n\n  morgue attachment <span class=\"hljs-built_in\">add</span> [<span class=\"hljs-keyword\">options</span>] &lt;[universe/]project&gt; <span class=\"hljs-symbol\">&lt;oid&gt;</span> <span class=\"hljs-symbol\">&lt;filename&gt;</span>\n\n    --content-<span class=\"hljs-built_in\">type</span>=CT    Specify Content-Type <span class=\"hljs-keyword\">for</span> attachment.\n                         The server may auto-detect this.\n    --attachment-name=<span class=\"hljs-keyword\">N</span>  Use this name <span class=\"hljs-keyword\">for</span> the attachment name.\n                         Default <span class=\"hljs-keyword\">is</span> the same <span class=\"hljs-keyword\">as</span> the filename.\n\n  morgue attachment <span class=\"hljs-built_in\">get</span> [<span class=\"hljs-keyword\">options</span>] &lt;[universe/]project&gt; <span class=\"hljs-symbol\">&lt;oid&gt;</span>\n\n    Must specify one of:\n    --attachment-id=ID   Attachment ID <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">delete</span>.\n    --attachment-name=<span class=\"hljs-keyword\">N</span>  Attachment name <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">delete</span>.\n\n  morgue attachment <span class=\"hljs-keyword\">list</span> [<span class=\"hljs-keyword\">options</span>] &lt;[universe/]project&gt; <span class=\"hljs-symbol\">&lt;oid&gt;</span>\n\n  morgue attachment <span class=\"hljs-keyword\">delete</span> [<span class=\"hljs-keyword\">options</span>] &lt;[universe/]project <span class=\"hljs-symbol\">&lt;oid&gt;</span>\n\n    Must specify one of:\n    --attachment-id=ID   Attachment ID <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">delete</span>.\n    --attachment-name=<span class=\"hljs-keyword\">N</span>  Attachment name <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">delete</span>.</pre><p>Manage attachments associated with an object.</p>\n<h3>list</h3>\n<p>Allows you to perform queries on object metadata. You can perform\neither selection queries or aggregation queries, but not both at the\nsame time.</p>\n<pre>Usage: morgue list &lt;<span class=\"hljs-string\">[&lt;universe&gt;/]</span>project&gt; <span class=\"hljs-string\">[substring]</span></pre><p>You may pass <code>--verbose</code> in order to get more detailed query performance\ndata.</p>\n<h4>Filters</h4>\n<p>The filter option expects a comma-delimited list of the form\n<code>&lt;attribute&gt;,&lt;operation&gt;,&lt;value&gt;</code>.</p>\n<p>The currently supported operations are <code>equal</code>, <code>regular-expression</code>,\n<code>inverse-regular-expression</code>, <code>at-least</code>, <code>greater-than</code>, <code>at-most</code>,\n<code>less-than</code>, <code>contains</code>, <code>not-contains</code>, <code>is-set</code>, and <code>is-not-set</code>.</p>\n<h4>Pagination</h4>\n<p>Pagination is handled with two flags</p>\n<p><code>--limit=&lt;n&gt;</code> controls the number of returned rows. <code>--offset=&lt;n&gt;</code> controls the\noffset at which rows are returned, another way to put it is that it skips the\nfirst <code>&lt;n&gt;</code> rows.</p>\n<h4>Aggregations</h4>\n<p>Aggregation is expressed through a myriad of command-line options that express\ndifferent aggregation operations. Options are of form <code>--&lt;option&gt;=&lt;attribute&gt;</code>.</p>\n<p>The <code>*</code> factor is used when aggregations are performed when no factor is\nspecified or if an object does not have a valid value associated with the\nfactor.</p>\n<table>\n<thead>\n<tr>\n<th>Option</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>--age</code></td>\n<td>Specify a relative timestamp to now. <code>1h</code> ago, or <code>1d</code> ago.</td>\n</tr>\n<tr>\n<td><code>--time</code></td>\n<td>Specify a range using <a href=\"https://github.com/wanasit/chrono#readme\">Chrono</a>.</td>\n</tr>\n<tr>\n<td><code>--unique</code></td>\n<td>provide a count of distinct values</td>\n</tr>\n<tr>\n<td><code>--histogram</code></td>\n<td>provide all distinct values</td>\n</tr>\n<tr>\n<td><code>--distribution</code></td>\n<td>provide a truncated histogram</td>\n</tr>\n<tr>\n<td><code>--mean</code></td>\n<td>calculate the mean of a column</td>\n</tr>\n<tr>\n<td><code>--sum</code></td>\n<td>sum all values</td>\n</tr>\n<tr>\n<td><code>--range</code></td>\n<td>provide the minimum and maximum values</td>\n</tr>\n<tr>\n<td><code>--count</code></td>\n<td>count all non-null values</td>\n</tr>\n<tr>\n<td><code>--bin</code></td>\n<td>provide a linear histogram of values</td>\n</tr>\n<tr>\n<td><code>--head</code></td>\n<td>provide the first value in a factor</td>\n</tr>\n<tr>\n<td><code>--tail</code></td>\n<td>provide the last value in a factor</td>\n</tr>\n<tr>\n<td><code>--object</code></td>\n<td>provide the maximum object identifier of a column</td>\n</tr>\n</tbody>\n</table>\n<h4>Sorting</h4>\n<p>Sorting of results is done with the stackable option <code>--sort=&lt;term&gt;</code>. The term\nsyntax is <code>[-](&lt;column&gt;|&lt;fold_term&gt;)</code>.</p>\n<ul>\n<li>The optional <code>-</code> reverse the sort term order to descending, otherwise it\ndefaults to ascending.</li>\n<li>The <code>&lt;column&gt;</code> term refers to a valid column in the table. This is only\neffective for selection type query, i.e. when using the <code>--select</code> option.</li>\n<li>The <code>&lt;fold_term&gt;</code> is an expression pointing to a fold operation. The\nexpression language for fold operation is one of the following literal:<ul>\n<li><code>;group</code>: sort by the group key itself.</li>\n<li><code>;count</code>: sort by the group count (number of crashes).</li>\n<li><code>column;idx</code>: where <code>column</code> is a string referencing a column in the fold\ndictionary and <code>idx</code> is an indice in the array. See examples .</li>\n</ul>\n</li>\n</ul>\n<p>Multiple sort terms can be provided to break ties in case the previous\nreferenced sort term has ties.</p>\n<h4>Example</h4>\n<p>Request all faults from application deployments owned by jdoe.\nProvide the timestamp, hostname, callstack and classifiers.</p>\n<pre>$ morgue list <span class=\"hljs-keyword\">bidder </span>--filter<span class=\"hljs-symbol\">=tag_owner</span>,equal,jdoe --<span class=\"hljs-keyword\">select=timestamp </span>--<span class=\"hljs-keyword\">select=hostname </span>--<span class=\"hljs-keyword\">select=callstack </span>--<span class=\"hljs-keyword\">select=classifiers\n</span>*\n<span class=\"hljs-number\">#9</span>d33    Thu Oct <span class=\"hljs-number\">13</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">18</span>:<span class=\"hljs-number\">36</span>:<span class=\"hljs-number\">01</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)     <span class=\"hljs-number\">5</span> months ago\n<span class=\"hljs-symbol\">  hostname:</span> <span class=\"hljs-number\">2235</span>.<span class=\"hljs-keyword\">bm-bidderc.prod.nym2\n</span><span class=\"hljs-symbol\">  classifiers:</span> abort stop\n<span class=\"hljs-symbol\">  callstack:</span>\n    <span class=\"hljs-meta\">assert</span> &#x2190; int_set_union_all &#x2190; all_domain_lists &#x2190;\n    setup_phase_unlocked &#x2190; <span class=\"hljs-keyword\">bid_handler_slave_inner </span>&#x2190; <span class=\"hljs-keyword\">bid_handler_slave </span>&#x2190;\n    an_sched_process_task &#x2190; an_sched_slave &#x2190; event_base_loop &#x2190;\n    an_sched_enter &#x2190; <span class=\"hljs-keyword\">bidder_slave </span>&#x2190; an_sched_pthread_cb\n<span class=\"hljs-symbol\">#ef2f</span>    Thu Oct <span class=\"hljs-number\">13</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">18</span>:<span class=\"hljs-number\">36</span>:<span class=\"hljs-number\">01</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)     <span class=\"hljs-number\">5</span> months ago\n<span class=\"hljs-symbol\">  hostname:</span> <span class=\"hljs-number\">2066</span>.<span class=\"hljs-keyword\">bm-impbus.prod.nym2\n</span><span class=\"hljs-symbol\">  classifiers:</span> abort stop\n<span class=\"hljs-symbol\">  callstack:</span>\n    <span class=\"hljs-meta\">assert</span> &#x2190; an_discovery_get_instances &#x2190; <span class=\"hljs-keyword\">budget_init_discovery </span>&#x2190;\n    main\n<span class=\"hljs-number\">#119</span>bf   Thu Oct <span class=\"hljs-number\">13</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">18</span>:<span class=\"hljs-number\">36</span>:<span class=\"hljs-number\">01</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)     <span class=\"hljs-number\">5</span> months ago\n<span class=\"hljs-symbol\">  hostname:</span> <span class=\"hljs-number\">2066</span>.<span class=\"hljs-keyword\">bm-impbus.prod.nym2\n</span><span class=\"hljs-symbol\">  classifiers:</span> abort stop\n<span class=\"hljs-symbol\">  callstack:</span>\n    <span class=\"hljs-meta\">assert</span> &#x2190; an_discovery_get_instances &#x2190; <span class=\"hljs-keyword\">budget_init_discovery </span>&#x2190;\n    main</pre><p>Request faults owned by jdoe, group them by fingerprint and aggregate\nthe number of unique hosts, display a histogram of affected versions and\nprovide a linear histogram of process age distribution.</p>\n<pre>$ morgue list <span class=\"hljs-keyword\">bidder </span>--age<span class=\"hljs-number\">=1</span>y --factor<span class=\"hljs-symbol\">=fingerprint</span> --filter<span class=\"hljs-symbol\">=tag_owner</span>,equal,jdoe --head<span class=\"hljs-symbol\">=callstack</span> --unique<span class=\"hljs-symbol\">=hostname</span> --histogram<span class=\"hljs-symbol\">=tag</span> --<span class=\"hljs-keyword\">bin=process.age\n</span><span class=\"hljs-number\">823</span>a55fb15bf697ba3041d736ade... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">5</span> months ago\n<span class=\"hljs-symbol\">Date</span>: Wed May <span class=\"hljs-number\">18</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">18</span>:<span class=\"hljs-number\">44</span>:<span class=\"hljs-number\">35</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n<span class=\"hljs-symbol\">callstack</span>:\n    <span class=\"hljs-meta\">assert</span> &#x2190; int_set_union_all &#x2190; all_domain_lists &#x2190;\n    setup_phase_unlocked &#x2190; <span class=\"hljs-keyword\">bid_handler_slave_inner </span>&#x2190; <span class=\"hljs-keyword\">bid_handler_slave </span>&#x2190;\n    an_sched_process_task &#x2190; an_sched_slave &#x2190; event_base_loop &#x2190;\n    an_sched_enter &#x2190; <span class=\"hljs-keyword\">bidder_slave </span>&#x2190; an_sched_pthread_cb\n<span class=\"hljs-symbol\">histogram</span>(tag):\n  <span class=\"hljs-number\">8</span>.<span class=\"hljs-number\">20</span>.<span class=\"hljs-number\">4</span>.<span class=\"hljs-keyword\">adc783.0 </span>&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586; <span class=\"hljs-number\">1</span>\n<span class=\"hljs-symbol\">unique</span>(hostname): <span class=\"hljs-number\">1</span>\n<span class=\"hljs-keyword\">bin(process.age):\n</span>          <span class=\"hljs-number\">7731</span>         <span class=\"hljs-number\">7732</span> &#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586; <span class=\"hljs-number\">1</span>\n\n<span class=\"hljs-number\">3</span>b851ac1ab1421409159cc38edb2... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">5</span> months ago\n<span class=\"hljs-symbol\">Date</span>: Tue May <span class=\"hljs-number\">17</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">17</span>:<span class=\"hljs-number\">28</span>:<span class=\"hljs-number\">26</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n      Tue May <span class=\"hljs-number\">17</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">17</span>:<span class=\"hljs-number\">30</span>:<span class=\"hljs-number\">07</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n<span class=\"hljs-symbol\">callstack</span>:\n    <span class=\"hljs-meta\">assert</span> &#x2190; an_discovery_get_instances &#x2190; <span class=\"hljs-keyword\">budget_init_discovery </span>&#x2190;\n    main\n<span class=\"hljs-symbol\">histogram</span>(tag):\n  <span class=\"hljs-number\">4</span>.<span class=\"hljs-number\">44</span>.<span class=\"hljs-number\">0</span>.<span class=\"hljs-keyword\">adc783.1 </span>&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586; <span class=\"hljs-number\">2</span>\n<span class=\"hljs-symbol\">unique</span>(hostname): <span class=\"hljs-number\">1</span>\n<span class=\"hljs-keyword\">bin(process.age):\n</span>            <span class=\"hljs-number\">23</span>           <span class=\"hljs-number\">24</span> &#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586; <span class=\"hljs-number\">1</span>\n            <span class=\"hljs-number\">24</span>           <span class=\"hljs-number\">25</span> &#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586;&#x2586; <span class=\"hljs-number\">1</span></pre><p>Request faults for the last 2 years, group them by fingerprint, show the first\nobject identifier in the group, sort the results by descending fingerprint,\nlimit the results to 5 faults and skip the first 10 (according to sort order).</p>\n<pre>$ morgue list blackhole --age=<span class=\"hljs-number\">2</span>y --factor=fingerprint --object=fingerprint --limit=<span class=\"hljs-number\">5</span> --offset=<span class=\"hljs-number\">10</span> --sort=<span class=\"hljs-string\">&quot;-;group&quot;</span>\nfec4bfecf8e077cf44024f5668fa... &#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">2</span> years ago\nFirst Occurrence: Tue Jan <span class=\"hljs-number\">12</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">13</span>:<span class=\"hljs-number\">30</span>:<span class=\"hljs-number\">12</span> GMT-<span class=\"hljs-number\">0500</span> (EST)\n     Occurrences: <span class=\"hljs-number\">360</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">object</span><span class=\"hljs-params\">(fingerprint)</span></span>: <span class=\"hljs-number\">1</span>c653d\n\nfe7294a780a16e30b619e8d94a8a... &#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">2</span> years ago\nFirst Occurrence: Wed Oct <span class=\"hljs-number\">28</span> <span class=\"hljs-number\">2015</span> <span class=\"hljs-number\">11</span>:<span class=\"hljs-number\">30</span>:<span class=\"hljs-number\">47</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n Last Occurrence: Wed Oct <span class=\"hljs-number\">28</span> <span class=\"hljs-number\">2015</span> <span class=\"hljs-number\">12</span>:<span class=\"hljs-number\">16</span>:<span class=\"hljs-number\">19</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">203</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">object</span><span class=\"hljs-params\">(fingerprint)</span></span>: <span class=\"hljs-number\">1</span>c23b3\n\nfe5e0dda6cf0fb996a521dde4087... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">1</span> year ago\nFirst Occurrence: Tue Jun <span class=\"hljs-number\">14</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">11</span>:<span class=\"hljs-number\">54</span>:<span class=\"hljs-number\">35</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">1</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">object</span><span class=\"hljs-params\">(fingerprint)</span></span>: <span class=\"hljs-number\">2</span>de5\n\nfe46d9af7c65c084091fed51ef02... &#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">2</span> years ago\nFirst Occurrence: Tue Oct <span class=\"hljs-number\">27</span> <span class=\"hljs-number\">2015</span> <span class=\"hljs-number\">16</span>:<span class=\"hljs-number\">59</span>:<span class=\"hljs-number\">34</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n Last Occurrence: Tue Oct <span class=\"hljs-number\">27</span> <span class=\"hljs-number\">2015</span> <span class=\"hljs-number\">20</span>:<span class=\"hljs-number\">05</span>:<span class=\"hljs-number\">30</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">3</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">object</span><span class=\"hljs-params\">(fingerprint)</span></span>: <span class=\"hljs-number\">8</span>f41\n\nfdc0860ef6dfd3d0397b53043ab9... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">1</span> year ago\nFirst Occurrence: Tue Jun <span class=\"hljs-number\">07</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">11</span>:<span class=\"hljs-number\">51</span>:<span class=\"hljs-number\">55</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">211</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">object</span><span class=\"hljs-params\">(fingerprint)</span></span>: <span class=\"hljs-number\">1</span>c1958</pre><p>Request faults for the two years, group them by fingerprint, sum process.age,\nsort the results by descending sum of process.age per fingerprint, limit the\nresults to 3 faults. Note here that <code>1</code> in <code>-process.age;1</code> is the second\noperator (<code>--sum</code>) in this case.</p>\n<pre>$ morgue list blackhole --age=<span class=\"hljs-number\">2</span>y --factor=fingerprint --first=process<span class=\"hljs-selector-class\">.age</span> --sum=process<span class=\"hljs-selector-class\">.age</span> --limit=<span class=\"hljs-number\">3</span> --sort=<span class=\"hljs-string\">&quot;-process.age;1&quot;</span>\nd9358a6fdb7eaa143254b6987d00... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">1</span> year ago\nFirst Occurrence: Tue Sep <span class=\"hljs-number\">20</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">21</span>:<span class=\"hljs-number\">59</span>:<span class=\"hljs-number\">46</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n Last Occurrence: Tue Sep <span class=\"hljs-number\">20</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">22</span>:<span class=\"hljs-number\">03</span>:<span class=\"hljs-number\">23</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">38586</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">sum</span><span class=\"hljs-params\">(process.age)</span></span>: <span class=\"hljs-number\">56892098354615</span> sec\n\n<span class=\"hljs-number\">524</span>b9f988c8ff9dfc1b3a0c71231... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">1</span> year ago\nFirst Occurrence: Tue Sep <span class=\"hljs-number\">20</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">22</span>:<span class=\"hljs-number\">01</span>:<span class=\"hljs-number\">52</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n Last Occurrence: Tue Sep <span class=\"hljs-number\">20</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">22</span>:<span class=\"hljs-number\">03</span>:<span class=\"hljs-number\">19</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">25737</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">sum</span><span class=\"hljs-params\">(process.age)</span></span>: <span class=\"hljs-number\">37947233900547</span> sec\n\nbffd05c6b745229fd1c648bbe2a7... &#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2588;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581;&#x2581; <span class=\"hljs-number\">1</span> year ago\nFirst Occurrence: Tue Sep <span class=\"hljs-number\">20</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">21</span>:<span class=\"hljs-number\">59</span>:<span class=\"hljs-number\">46</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n Last Occurrence: Tue Sep <span class=\"hljs-number\">20</span> <span class=\"hljs-number\">2016</span> <span class=\"hljs-number\">22</span>:<span class=\"hljs-number\">03</span>:<span class=\"hljs-number\">01</span> GMT-<span class=\"hljs-number\">0400</span> (EDT)\n     Occurrences: <span class=\"hljs-number\">20096</span>\n<span class=\"hljs-function\"><span class=\"hljs-title\">sum</span><span class=\"hljs-params\">(process.age)</span></span>: <span class=\"hljs-number\">29630010305216</span> sec</pre><h3>delete</h3>\n<p>Allows deleting objects.</p>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue delete <span class=\"hljs-params\">&lt;[universe/]project&gt;</span> <span class=\"hljs-params\">&lt;oid1&gt;</span> [... oidN]</pre><p>Object IDs must be specified; they can be found in <code>morgue list</code> output.\nThe object ID printed in the example above is <code>9d33</code>.</p>\n<p>The following options support partial deletes:\n<code>--physical-only</code>: Only delete the physical object; retain indexing.\n<code>--crdb-only</code>: Only delete the indexed data; requires physically deleted objects.</p>\n<h3>flamegraph</h3>\n<pre>Usage: morgue flamegraph <span class=\"hljs-string\">[--filter=&lt;filter expression&gt;]</span> <span class=\"hljs-string\">[--reverse]</span> <span class=\"hljs-string\">[--unique]</span> <span class=\"hljs-string\">[-o file.svg]</span></pre><p>Generate a flamegraph of callstacks of all objects matching the specified\nfilter criteria. The <code>--filter</code> option behaves identically to the <code>list</code>\nsub-command. This functionality requires <code>perl</code> to be installed.\nTo learn more about flamegraphs, please see\n<a href=\"http://www.brendangregg.com/flamegraphs.html\">http://www.brendangregg.com/flamegraphs.html</a>.</p>\n<p>Use <code>--unique</code> to only sample unique crashes. Use <code>--reverse</code> to begin sampling\nfrom leaf functions.</p>\n<h3>report</h3>\n<p>Create and manage scheduled reports.</p>\n<pre>Usage: morgue report &lt;list | <span class=\"hljs-built_in\">create</span> | <span class=\"hljs-built_in\">delete</span> | <span class=\"hljs-built_in\">send</span>&gt; [<span class=\"hljs-comment\">--project=...] [--universe=...]</span></pre><h4>create</h4>\n<pre>Usage: morgue report &lt;project&gt; create\n  &lt;--rcpt=...&gt;\n  &lt;--title=...&gt;\n  [--filter=...]\n  [--fingerprint=...]\n  [--histogram=...]\n  [--hour=...]\n  [--day=...]\n  --period=&lt;week | day&gt;</pre><p>Example:</p>\n<pre>$ morgue report MyProject create --rcpt=<span class=\"hljs-literal\">null</span><span class=\"hljs-meta\">@backtrace</span>.io\n    --rcpt=<span class=\"hljs-keyword\">list</span><span class=\"hljs-meta\">@backtrace</span>.io --<span class=\"hljs-keyword\">filter</span>=environment,equal,prod\n    --title=<span class=\"hljs-string\">&quot;Production Crashes weekly&quot;</span> --period=week</pre><h4>delete</h4>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue report <span class=\"hljs-params\">&lt;project&gt;</span> delete <span class=\"hljs-params\">&lt;report integer identifier&gt;</span></pre><h4>list</h4>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue report <span class=\"hljs-params\">&lt;project&gt;</span> list</pre><h3>repair</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue repair <span class=\"hljs-params\">&lt;[universe/]project&gt;</span></pre><p>Repair a project&apos;s attribute database. For each corrupted pages of a project&apos;s\nattribute database, reprocess the affected objects (if possible). Once\ncompleted and successful, transition the database into normal mode.</p>\n<h3>reprocess</h3>\n<pre>Usage: morgue reprocess &lt;[universe/]project&gt; [<span class=\"hljs-symbol\">&lt;query&gt;</span>|<span class=\"hljs-symbol\">&lt;object&gt;</span> ...] [--<span class=\"hljs-keyword\">first</span> <span class=\"hljs-keyword\">N</span>] [--<span class=\"hljs-keyword\">last</span> <span class=\"hljs-keyword\">N</span>]\n\nOptions <span class=\"hljs-keyword\">for</span> reproces<span class=\"hljs-variable\">s:</span>\n  --<span class=\"hljs-keyword\">first</span>=<span class=\"hljs-keyword\">N</span>        Specify the <span class=\"hljs-keyword\">first</span> object ID (defaul<span class=\"hljs-variable\">t:</span> earliest known)\n  --<span class=\"hljs-keyword\">last</span>=<span class=\"hljs-keyword\">N</span>         Specify the <span class=\"hljs-keyword\">last</span> object ID (defaul<span class=\"hljs-variable\">t:</span> most recent known)</pre><p>Reprocess the project&apos;s objects.  This command can be used to re-execute\nindexing, fingerprinting, and symbolification (where needed).</p>\n<p>If a set of objects (or query) is specified, any values for <code>--first</code> and\n<code>--last</code> are replaced to match the object list.  If no query, object list,\nor range is provided, all objects in the project are reprocessed.</p>\n<h3>retention</h3>\n<pre>Usage: morgue retention &lt;<span class=\"hljs-built_in\">list</span>|<span class=\"hljs-built_in\">set</span>|status|clear&gt; &lt;<span class=\"hljs-built_in\">name</span>&gt; [options]\n\nOptions <span class=\"hljs-keyword\">for</span> <span class=\"hljs-built_in\">set</span>/clear:\n  --<span class=\"hljs-built_in\">type</span>=T         Specify retention <span class=\"hljs-built_in\">type</span> (<span class=\"hljs-keyword\">default</span>: project)\n                   valid: instance, universe, project\n\nOptions <span class=\"hljs-keyword\">for</span> status:\n  [--<span class=\"hljs-built_in\">type</span>=&lt;universe|project&gt; &lt;<span class=\"hljs-built_in\">name</span>&gt;]\n\nOptions <span class=\"hljs-keyword\">for</span> <span class=\"hljs-built_in\">set</span>:\n  --<span class=\"hljs-built_in\">max</span>-age=N      Specify <span class=\"hljs-built_in\">time</span> limit <span class=\"hljs-keyword\">for</span> objects, <span class=\"hljs-built_in\">in</span> seconds\n  --physical-only  Specifies that the policy only delete physical copies;\n           indexing will be retained.</pre><p>Configure the retention policy for a given namespace, which can cover the\ncoroner instance, or a specific universe or project.</p>\n<h4>Example</h4>\n<pre>$ morgue retention clear a_project\n<span class=\"hljs-keyword\">success\n</span>$ morgue retention set blackhole --max-age=3600\n$ morgue retention list\nProject-level:\n  blackhole: max age: 1h\n$</pre><h3>sampling</h3>\n<pre><span class=\"hljs-attribute\">Usage</span>: morgue sampling &lt;status|reset&gt; [options]\n\n<span class=\"vim\">Options <span class=\"hljs-keyword\">for</span> either status <span class=\"hljs-built_in\">or</span> rese<span class=\"hljs-variable\">t:</span>\n  --fingerprint=group             Specify <span class=\"hljs-keyword\">a</span> fingerprint <span class=\"hljs-keyword\">to</span> apply <span class=\"hljs-keyword\">to</span>.\n                                  Without this, applies <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">all</span>.\n  --project=[universe/]project    Specify <span class=\"hljs-keyword\">a</span> project <span class=\"hljs-keyword\">to</span> apply <span class=\"hljs-keyword\">to</span>.\n                                  Without this, applies <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">all</span>.\n\nOptions <span class=\"hljs-keyword\">for</span> status <span class=\"hljs-keyword\">only</span>:\n  --<span class=\"hljs-built_in\">max</span>-groups=<span class=\"hljs-keyword\">N</span>                  Specify <span class=\"hljs-built_in\">max</span> <span class=\"hljs-keyword\">number</span> of groups <span class=\"hljs-keyword\">to</span> <span class=\"hljs-keyword\">display</span>\n                                  per project.</span></pre><p>Retrieve the object sampling status, or reset it.\nProject is a required flag if fingerprint is specified.</p>\n<h3>symbol</h3>\n<pre>Usage: morgue symbol &lt;<span class=\"hljs-meta\">[&lt;universe&gt;/]project&gt; [summary | list | missing | archives] [-o &lt;output file&gt;]</span></pre><p>Retrieve a list of uploaded symbols or symbol archives. By default, <code>morgue symbol</code>\nwill return a summary of uploaded archives, available symbols and missing symbols.\nIf <code>archives</code> is used, a list of uploaded, in-process and symbol processing errors\nare outputted. If <code>list</code> is used, then a list of uploaded symbols is returned. If\n<code>missing</code> is used, then the set of missing symbols for the project are included.</p>\n<h3>scrubber</h3>\n<p>Create, modify and delete data scrubbers.</p>\n<pre>Usage: morgue scrubber &lt;project&gt; &lt;list | <span class=\"hljs-type\">create</span> | <span class=\"hljs-type\">modify</span> | <span class=\"hljs-type\">delete</span>&gt;</pre><p>Use <code>--name</code> to identify the scrubber. Use <code>--regexp</code> to specify the pattern to\nmatch and scrub. Use <code>--builtin</code> to specify a builtin scrubber, <code>ssn</code>, <code>ccn</code>,\n<code>key</code> and <code>env</code> are currently supported for social security number, credit card\nnumber, encryption key and environment variable. If <code>--builtin=all</code> in <code>create</code>\nsubcommand, all supported builtin scrubbers are created. <code>--regexp</code> and\n<code>--builtin</code> are mutually exclusive. Use <code>--enable</code> to activate the scrubber, 0\ndisables the scrubber while other integer values enable it.</p>\n<h3>setup</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue setup <span class=\"hljs-params\">&lt;url&gt;</span></pre><p>If you are using an on-premise version of <code>coronerd</code>, use <code>morgue setup</code>\nto configure the initial organization and user. For example, if the server is\n<code>backtrace.mycompany.com</code>, then you would run <code>morgue setup http://backtrace.mycompany.com</code>.\nWe recommend resetting your password after you enable SSL (done by configuring\nyour certificates).</p>\n<h3>nuke</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue nuke --universe=<span class=\"hljs-params\">&lt;universe name&gt;</span> [--project=<span class=\"hljs-params\">&lt;project name&gt;</span>]</pre><p>If you want to nuke an object and all of the dependencies of the object.\nDo not use this operation without making a back-up of your data.</p>\n<h3>token</h3>\n<pre>Usage: morgue <span class=\"hljs-keyword\">token</span> [<span class=\"hljs-built_in\">create</span> | list | <span class=\"hljs-built_in\">delete</span>] [<span class=\"hljs-comment\">--project=...] [--universe=...]</span></pre><h4>create</h4>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue token create --project=<span class=\"hljs-params\">&lt;project&gt;</span> --capability=<span class=\"hljs-params\">&lt;capability&gt;</span></pre><p>Capability can be any of:</p>\n<ul>\n<li>symbol:post - Enable symbol uploads with the specified API token.</li>\n<li>error:post  - Enable error and dump submission with the specified API token.</li>\n<li>query:post  - Enable queries to be issued using the specified token.</li>\n<li>sync:post   - Allow for slower but more verbose submission.</li>\n</ul>\n<p>Multiple capabilities can be specified by using <code>--capability</code> multiple times\nor using a comma-separated list.</p>\n<h4>list</h4>\n<pre>Usage: morgue token <span class=\"hljs-built_in\">list</span> <span class=\"hljs-meta\">[</span>-<span class=\"hljs-params\">-universe</span>=<span class=\"hljs-params\">...</span><span class=\"hljs-meta\">]</span> <span class=\"hljs-meta\">[</span>-<span class=\"hljs-params\">-project</span>=<span class=\"hljs-params\">...</span><span class=\"hljs-meta\">]</span></pre><p>List API tokens in the specified universe, for all projects or a specified\nproject.</p>\n<h4>delete</h4>\n<pre>Usage: morgue <span class=\"hljs-built_in\">token</span> <span class=\"hljs-keyword\">delete</span> &lt;sha256 <span class=\"hljs-keyword\">or</span> prefix&gt;</pre><p>Delete the specified token by substring or exact match.</p>\n<h3>user</h3>\n<pre>Usage: morgue user reset <span class=\"hljs-string\">[--universe=...]</span> <span class=\"hljs-string\">[--user=...]</span> <span class=\"hljs-string\">[--password=...]</span></pre><p>Modify users.</p>\n<p>Currently, can only be used to reset user passwords.  Prompts for user and\npassword if either is not specified.</p>\n<h3>tenant</h3>\n<p>Create isolated tenants for receiving error data and log in. Tenants provide\nnamespace isolation. Users in one tenant are unable to interact with any\nobjects outside of their tenant.</p>\n<p>This is an enterprise feature and not enabled by default for self-serve\ncustomers. The tenant commands require superuser access.</p>\n<pre>Usage: morgue tenant &lt;list | <span class=\"hljs-built_in\">create</span> | <span class=\"hljs-built_in\">delete</span>&gt;\n  <span class=\"hljs-built_in\">create</span> &lt;name&gt;: Create <span class=\"hljs-keyword\">a</span> tenant <span class=\"hljs-keyword\">with</span> <span class=\"hljs-keyword\">the</span> specified name.\n  <span class=\"hljs-built_in\">delete</span> &lt;name&gt;: Delete <span class=\"hljs-keyword\">a</span> tenant <span class=\"hljs-keyword\">with</span> <span class=\"hljs-keyword\">the</span> specified name.\n           list: List all tenants <span class=\"hljs-keyword\">on</span> <span class=\"hljs-title\">your</span> <span class=\"hljs-title\">instance</span>.</pre><h4>Examples</h4>\n<p>1.0 Create a Tenant</p>\n<p>After logging into an object store as a superuser, we are able to simply\ncreate a tenant using the following command:</p>\n<pre>$ morgue tenant <span class=\"hljs-built_in\">create</span> testingxyz\nTenant successfully created <span class=\"hljs-keyword\">at</span> <span class=\"hljs-keyword\">https</span>://testingxyz.sp.backtrace.io\nWait <span class=\"hljs-keyword\">a</span> few minutes <span class=\"hljs-keyword\">for</span> propagation <span class=\"hljs-built_in\">to</span> complete.</pre><p>Tenants are required to be contained with-in the same TLD. For example,\na tenant of name <code>X</code> is expected to be contained in <code>X.sp.backtrace.io</code>.</p>\n<p>After creating a tenant, you will probably need to invite an initial\nadministrator user for the tenant. For that, please see <code>invite</code> sub-command\nlisted below. You must use the <code>--tenant</code> option to invite an administrator\nto a particular tenant.</p>\n<p>2.0 Delete a Tenant</p>\n<p>After logging into an object store as a superuser, we are able to simply\ncreate a tenant using the following command:</p>\n<pre>$ morgue tenant <span class=\"hljs-keyword\">delete</span> testingxyz\nTenant successfully deleted.</pre><p>Please note this is a destructive command from a configuration perspective.\nUnless you are maintaining backups, there is no way to restore your\nconfiguration data.</p>\n<p>3.0 List Tenants</p>\n<p>You can list existing tenants using the <code>morgue tenant list</code> command\nas below.</p>\n<pre>$ morgue tenant <span class=\"hljs-keyword\">list</span>\n  ID Tenant               URL\n   <span class=\"hljs-number\">1</span> test                 http<span class=\"hljs-variable\">s:</span>//test.<span class=\"hljs-keyword\">sp</span>.backtrace.io\n   <span class=\"hljs-number\">4</span> test1                http<span class=\"hljs-variable\">s:</span>//test1.<span class=\"hljs-keyword\">sp</span>.backtrace.io</pre><h3>similarity</h3>\n<p>Compute the similarity and list acceptably similar crash groups according\nto their callstack attribute.</p>\n<pre>Usage: morgue similarity &lt;[universe]/project&gt; [filter expression]\n    [<span class=\"hljs-comment\">--threshold=N]     The minimum length of the callstack for groups to</span>\n                        consider <span class=\"hljs-keyword\">for</span> similarity analysis.\n    [<span class=\"hljs-comment\">--intersect=N]     The minimum number of common symbols between</span>\n                        two groups.\n    [<span class=\"hljs-comment\">--distance=N]      The maximum acceptable edit distance between</span>\n                        two groups.\n    [<span class=\"hljs-comment\">--fingerprint=N]   A fingerprint to compute similarity to.</span></pre><h3>invite</h3>\n<p>Invite new users into your system. Requires you to have logged in.</p>\n<pre>Usage: morgue invite &lt;create | list | resend&gt;\n  create &lt;username&gt; &lt;email&gt;\n    -<span class=\"ruby\">-role=&lt;<span class=\"hljs-string\">&quot;guest&quot;</span> <span class=\"hljs-params\">| &quot;member&quot; |</span> <span class=\"hljs-string\">&quot;admin&quot;</span>&gt;\n</span>    -<span class=\"ruby\">-metadata=&lt;metadata&gt;\n</span>    -<span class=\"ruby\">-tenant=&lt;tenant name&gt;\n</span>    -<span class=\"ruby\">-method=&lt;<span class=\"hljs-string\">&quot;password&quot;</span> <span class=\"hljs-params\">| &quot;saml&quot; |</span> <span class=\"hljs-string\">&quot;pam&quot;</span>&gt;\n</span>  delete &lt;token&gt;\n  resend &lt;token&gt;</pre><h4>Examples</h4>\n<p>1.0 Invite a User</p>\n<p>Below, we invite a new user into the tenant currently logged into (or\nthe first tenant, if multiple exist). The default settings for the user\nare to use password authentication and have a <code>member</code> role.</p>\n<pre>$ morgue invite <span class=\"hljs-keyword\">create</span> &lt;username&gt; &lt;<span class=\"hljs-keyword\">user</span> <span class=\"hljs-built_in\">e</span>-mail&gt;</pre><pre>$ morgue invite sbahra user@backtrace.<span class=\"hljs-built_in\">io</span>\nInvitation successfully created <span class=\"hljs-keyword\">for</span> user@backtrace.<span class=\"hljs-built_in\">io</span>\nSending e-mail...done</pre><p>1.1 Invite a User as an Administrator</p>\n<pre>$ morgue invite <span class=\"hljs-keyword\">create</span> <span class=\"hljs-keyword\">user</span> <span class=\"hljs-keyword\">user</span>@gmail.com --<span class=\"hljs-keyword\">role</span>=admin\nInvitation successfully created <span class=\"hljs-keyword\">for</span> <span class=\"hljs-keyword\">user</span>@backtrace.io\nSending <span class=\"hljs-built_in\">e</span>-mail...done</pre><p>1.2 Invite a User into a Particular Tenant</p>\n<pre>$ morgue invite <span class=\"hljs-keyword\">create</span> <span class=\"hljs-keyword\">user</span> <span class=\"hljs-keyword\">user</span>@gmail.com --tenant=mystudio\nInvitation successfully created <span class=\"hljs-keyword\">for</span> <span class=\"hljs-keyword\">user</span>@backtrace.io\nSending <span class=\"hljs-built_in\">e</span>-mail...done</pre><p>2.0 List Pending Invitation</p>\n<p>This will list invitations that have yet to be accepted or\nactivated.</p>\n<pre>$ morgue invite <span class=\"hljs-type\">list</span>\nTenant             Username   Method     Role                          Email Token\n     <span class=\"hljs-number\">1</span>              ashley2 password    admin          ashley2@backtrace.io f892200fa564...\n     <span class=\"hljs-number\">1</span>                jack1 password   member            jack@backtrace.io <span class=\"hljs-number\">39</span>c1b80a7e00...\n     <span class=\"hljs-number\">1</span>                jack2 password   member          jack+<span class=\"hljs-number\">2</span>@backtrace.io c399bdf23873...\n     <span class=\"hljs-number\">1</span>            jack17131 password   member       jack+<span class=\"hljs-number\">4512</span>@backtrace.io <span class=\"hljs-number\">784</span>d2a8ffe12...\n     <span class=\"hljs-number\">1</span>            jack25262 password   member      jack+<span class=\"hljs-number\">24688</span>@backtrace.io <span class=\"hljs-number\">97e306</span>d3373a...\n     <span class=\"hljs-number\">1</span>            jack25629 password   member      jack+<span class=\"hljs-number\">28155</span>@backtrace.io ed02ceea2ba4...\n     <span class=\"hljs-number\">1</span>            jack28000 password   member       jack+<span class=\"hljs-number\">3644</span>@backtrace.io <span class=\"hljs-number\">3</span>f87906bd5d9...\n     <span class=\"hljs-number\">1</span>            jack19468 password   member      jack+<span class=\"hljs-number\">28771</span>@backtrace.io <span class=\"hljs-number\">3</span>c6b3a3aaf41...\n     <span class=\"hljs-number\">1</span>            jack15686 password   member       jack+<span class=\"hljs-number\">4203</span>@backtrace.io <span class=\"hljs-number\">78</span>bd9cd127a8...\n     <span class=\"hljs-number\">4</span>             jack2268 password   member      jack+<span class=\"hljs-number\">19325</span>@backtrace.io <span class=\"hljs-number\">776</span>c6d389f89...\n     <span class=\"hljs-number\">4</span>            jack20597 password   member      jack+<span class=\"hljs-number\">24692</span>@backtrace.io <span class=\"hljs-number\">48972737</span>a85e...\n     <span class=\"hljs-number\">4</span>             jack4803 password   member      jack+<span class=\"hljs-number\">30407</span>@backtrace.io <span class=\"hljs-number\">4943913</span>c86f3...</pre><p>3.0 Delete an Invitation</p>\n<p>Below, we demonstrate how to delete an invitation. We pass a token (or unique\nsubstring) for deletion.</p>\n<pre>$ morgue invite <span class=\"hljs-keyword\">delete</span> f8922\nInvitation successfully deleted.</pre>"
    },
    {
      "component": "footer",
      "links": [
        {
          "href": "https://github.com/backtrace-labs/backtrace-morgue",
          "text": "GitHub"
        },
        {
          "href": "https://github.com/backtrace-labs",
          "text": "backtrace-labs"
        }
      ]
    }
  ]
}