{{!
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
}}

<h3>Dashboards</h3>
<table class='table table-striped'>
  <thead><tr><th>Dashboard</th><th>Description</th></tr></thead>
  <tbody
  <tr><td><a href="{{base_url}}/scans">Scans</a></td><td>List of currently running and recently completed scans.</td></tr>
  <tr><td><a href="{{base_url}}/transactions">Transactions</a></td><td>List of transactions that are currently running.</td></tr>
  <tr><td><a href="{{base_url}}/maintenance-manager">Maintenance Manager</a></td><td>List of operations that are currently running and those that are registered.</td></tr>
</tbody></table>
