-
Notifications
You must be signed in to change notification settings - Fork 14
/
compositor.json
143 lines (143 loc) · 51 KB
/
compositor.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
{
"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\"><url></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> <[<universe>/]<span class=\"hljs-keyword\">project</span>> [<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 <<span class=\"hljs-meta\">[<universe>/]project> [options] <object id> [-o <output file>]</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\"><[<universe></span>/]project> <span class=\"hljs-params\"><file></span> <span class=\"hljs-params\"><--format=btt|minidump|json|symbols></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\"><[universe/]project></span> (<span class=\"hljs-params\"><query></span>|<span class=\"hljs-params\"><object></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 <<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>> ...\n\n morgue attachment <span class=\"hljs-built_in\">add</span> [<span class=\"hljs-keyword\">options</span>] <[universe/]project> <span class=\"hljs-symbol\"><oid></span> <span class=\"hljs-symbol\"><filename></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>] <[universe/]project> <span class=\"hljs-symbol\"><oid></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>] <[universe/]project> <span class=\"hljs-symbol\"><oid></span>\n\n morgue attachment <span class=\"hljs-keyword\">delete</span> [<span class=\"hljs-keyword\">options</span>] <[universe/]project <span class=\"hljs-symbol\"><oid></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 <<span class=\"hljs-string\">[<universe>/]</span>project> <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><attribute>,<operation>,<value></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=<n></code> controls the number of returned rows. <code>--offset=<n></code> controls the\noffset at which rows are returned, another way to put it is that it skips the\nfirst <code><n></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>--<option>=<attribute></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=<term></code>. The term\nsyntax is <code>[-](<column>|<fold_term>)</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><column></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><fold_term></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> ← int_set_union_all ← all_domain_lists ←\n setup_phase_unlocked ← <span class=\"hljs-keyword\">bid_handler_slave_inner </span>← <span class=\"hljs-keyword\">bid_handler_slave </span>←\n an_sched_process_task ← an_sched_slave ← event_base_loop ←\n an_sched_enter ← <span class=\"hljs-keyword\">bidder_slave </span>← 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> ← an_discovery_get_instances ← <span class=\"hljs-keyword\">budget_init_discovery </span>←\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> ← an_discovery_get_instances ← <span class=\"hljs-keyword\">budget_init_discovery </span>←\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... ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁ <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> ← int_set_union_all ← all_domain_lists ←\n setup_phase_unlocked ← <span class=\"hljs-keyword\">bid_handler_slave_inner </span>← <span class=\"hljs-keyword\">bid_handler_slave </span>←\n an_sched_process_task ← an_sched_slave ← event_base_loop ←\n an_sched_enter ← <span class=\"hljs-keyword\">bidder_slave </span>← 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>▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ <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> ▆▆▆▆▆▆▆▆▆▆ <span class=\"hljs-number\">1</span>\n\n<span class=\"hljs-number\">3</span>b851ac1ab1421409159cc38edb2... ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁ <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> ← an_discovery_get_instances ← <span class=\"hljs-keyword\">budget_init_discovery </span>←\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>▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ <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> ▆▆▆▆▆▆▆▆▆▆ <span class=\"hljs-number\">1</span>\n <span class=\"hljs-number\">24</span> <span class=\"hljs-number\">25</span> ▆▆▆▆▆▆▆▆▆▆ <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\">"-;group"</span>\nfec4bfecf8e077cf44024f5668fa... ▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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... █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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... ▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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... █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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... ▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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\">"-process.age;1"</span>\nd9358a6fdb7eaa143254b6987d00... ▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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... ▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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... ▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁ <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\"><[universe/]project></span> <span class=\"hljs-params\"><oid1></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=<filter expression>]</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 <list | <span class=\"hljs-built_in\">create</span> | <span class=\"hljs-built_in\">delete</span> | <span class=\"hljs-built_in\">send</span>> [<span class=\"hljs-comment\">--project=...] [--universe=...]</span></pre><h4>create</h4>\n<pre>Usage: morgue report <project> create\n <--rcpt=...>\n <--title=...>\n [--filter=...]\n [--fingerprint=...]\n [--histogram=...]\n [--hour=...]\n [--day=...]\n --period=<week | day></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\">"Production Crashes weekly"</span> --period=week</pre><h4>delete</h4>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue report <span class=\"hljs-params\"><project></span> delete <span class=\"hljs-params\"><report integer identifier></span></pre><h4>list</h4>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue report <span class=\"hljs-params\"><project></span> list</pre><h3>repair</h3>\n<pre><span class=\"hljs-symbol\">Usage:</span> morgue repair <span class=\"hljs-params\"><[universe/]project></span></pre><p>Repair a project's attribute database. For each corrupted pages of a project'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 <[universe/]project> [<span class=\"hljs-symbol\"><query></span>|<span class=\"hljs-symbol\"><object></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'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 <<span class=\"hljs-built_in\">list</span>|<span class=\"hljs-built_in\">set</span>|status|clear> <<span class=\"hljs-built_in\">name</span>> [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>=<universe|project> <<span class=\"hljs-built_in\">name</span>>]\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 <status|reset> [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 <<span class=\"hljs-meta\">[<universe>/]project> [summary | list | missing | archives] [-o <output file>]</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 <project> <list | <span class=\"hljs-type\">create</span> | <span class=\"hljs-type\">modify</span> | <span class=\"hljs-type\">delete</span>></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\"><url></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\"><universe name></span> [--project=<span class=\"hljs-params\"><project name></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\"><project></span> --capability=<span class=\"hljs-params\"><capability></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> <sha256 <span class=\"hljs-keyword\">or</span> prefix></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 <list | <span class=\"hljs-built_in\">create</span> | <span class=\"hljs-built_in\">delete</span>>\n <span class=\"hljs-built_in\">create</span> <name>: 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> <name>: 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 <[universe]/project> [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 <create | list | resend>\n create <username> <email>\n -<span class=\"ruby\">-role=<<span class=\"hljs-string\">"guest"</span> <span class=\"hljs-params\">| "member" |</span> <span class=\"hljs-string\">"admin"</span>>\n</span> -<span class=\"ruby\">-metadata=<metadata>\n</span> -<span class=\"ruby\">-tenant=<tenant name>\n</span> -<span class=\"ruby\">-method=<<span class=\"hljs-string\">"password"</span> <span class=\"hljs-params\">| "saml" |</span> <span class=\"hljs-string\">"pam"</span>>\n</span> delete <token>\n resend <token></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> <username> <<span class=\"hljs-keyword\">user</span> <span class=\"hljs-built_in\">e</span>-mail></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 [email protected] f892200fa564...\n <span class=\"hljs-number\">1</span> jack1 password member [email protected] <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"
}
]
}
]
}