+|output_storage_classes|array of strings|The storage classes that will be used for the log and output collections of this container request|default is ["default"]|
+|output_properties|hash|User metadata properties to set on the output collection. The output collection will also have default properties "type" ("intermediate" or "output") and "container_request" (the uuid of container request that produced the collection).|
+|cumulative_cost|number|Estimated cost of the cloud VMs used to satisfy the request, including retried attempts and completed subrequests, but not including reused containers.|0 if container was reused or VM price information was not available.|
+
+h2(#lifecycle). Container request lifecycle
+
+A container request may be created in the Committed state, or created in the Uncommitted state and then moved into the Committed state.
+
+Once a request is in the Committed state, Arvados locates a suitable existing container or schedules a new one. When the assigned container finishes, the request state changes to Final.
+
+A client may cancel a committed request early (before the assigned container finishes) by setting the request priority to zero.
+
+!{max-width:40em;max-height:70em}{{site.baseurl}}/api/methods/container_request_lifecycle.svg!
+{% comment %}
+# svg generated using https://dreampuf.github.io/
+digraph {
+ graph [nojustify=true] [labeljust=l];
+
+ invisiblestart [label = ""] [color=white];
+ node [color=black] [fillcolor=white] [style=filled] [shape=box] [nojustify=true];
+ uncommitted [label = "container request:\l state=Uncommitted\l"] [fillcolor=lightgrey];
+ committed [label = "container request:\l state=Committed\l priority>0\l"];
+ invisiblestart -> uncommitted [label = "user creates container request"] [color=navy] [fontcolor=navy];
+ uncommitted -> committed [label = "user updates to\lstate=Committed, priority>0\l"] [color=navy] [fontcolor=navy];
+ queued [label = "container request:\l state=Committed\l priority>0\lcontainer:\l state=Queued\l"];
+ committed -> queued [label = "Arvados creates\la new container\l"];
+ locked [label = "container request:\l state=Committed\l priority>0\lcontainer:\l state=Locked\l"];
+ queued -> locked [label = "Arvados is ready\lto dispatch the container\l"];
+ running [label = "container request:\l state=Committed\l priority>0\lcontainer:\l state=Running\l"];
+ locked -> running [label = "Arvados starts the\lcontainer process\l"];
+
+ node [color=black] [fillcolor=lightblue] [style=filled] [shape=box];
+ reused [label = "container request:\l state=Final\lcontainer:\l state=Complete\l(reused existing container)\l"];
+ latecancelled [label = "container request:\l state=Final\lcontainer:\l state=Cancelled\l"];
+ containerfinished [label = "container request:\l state=Final\lcontainer:\l state=Complete\l exit_code=0\l"];
+ containerfailed [label = "container request:\l state=Final\lcontainer:\l state=Complete\l exit_codeā 0\l"];
+
+ committed -> reused [label = "Arvados selects an\lexisting container\l"];
+ queued -> latecancelled [label = "user updates to\lpriority=0\l"] [color=navy] [fontcolor=navy];
+ locked -> latecancelled [label = "user updates to\lpriority=0\l"] [color=navy] [fontcolor=navy];
+ running -> latecancelled [label = "user updates to\lpriority=0\l"] [color=navy] [fontcolor=navy];
+ running -> containerfailed [label = "container process\lfails\l"];
+ running -> containerfinished [label = "container process\lsucceeds\l"];
+
+ # layout hacks
+ committed -> containerfinished [style=invis];
+ uncommitted -> latecancelled [style=invis];
+ reused -> latecancelled [style=invis];
+}
+{% endcomment %}