| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Apache BookKeeper™ - BookKeeper Admin REST API</title> |
| |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| |
| <link rel="stylesheet" href="/css/normalize.css"> |
| <link rel="stylesheet" href="/css/tippy.css"> |
| <link rel="stylesheet" href="/css/style.css"> |
| |
| <link rel="shortcut icon" href="/img/favicon.ico"> |
| |
| <script src="/js/tippy.min.js"></script> |
| |
| <script type="text/javascript"> |
| var shiftWindow = function() { scrollBy(0, -25); }; |
| window.addEventListener("hashchange", shiftWindow); |
| window.addEventListener("pageshow", shiftWindow); |
| function load() { if (window.location.hash) shiftWindow(); } |
| </script> |
| </head> |
| <body class="body"> |
| <main class="main"> |
| |
| <nav class="navbar bk-topnav"> |
| <div class="navbar-brand"> |
| <a class="navbar-item bk-brand" href="/"> |
| Apache BookKeeper™ |
| </a> |
| |
| <div class="navbar-burger burger" data-target="bkNav"> |
| <span></span> |
| <span></span> |
| <span></span> |
| </div> |
| </div> |
| |
| <div id="bkNav" class="navbar-menu"> |
| <div class="navbar-start"> |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link">Documentation</a> |
| <div class="navbar-dropdown is-boxed"> |
| <a class="navbar-item" href="/docs/latest/overview/overview"> |
| Version 4.15.0-SNAPSHOT |
| <span class="tag is-warning">Development</span> |
| </a> |
| <a class="navbar-item" href="/docs/latest/api/javadoc"> |
| <span class="icon bk-javadoc-icon"> |
| <img src="/img/java-icon.svg"> |
| </span> |
| Javadoc |
| </a> |
| <hr class="dropdown-divider"> |
| |
| <a class="navbar-item" href="/docs/4.14.0/overview/overview"> |
| Release 4.14.0 |
| |
| </a> |
| |
| <a class="navbar-item" href="/docs/4.13.0/overview/overview"> |
| Release 4.13.0 |
| |
| </a> |
| |
| <a class="navbar-item" href="/docs/4.12.1/overview/overview"> |
| Release 4.12.1 |
| |
| </a> |
| |
| <a class="navbar-item" href="/docs/4.12.0/overview/overview"> |
| Release 4.12.0 |
| |
| </a> |
| |
| <a class="navbar-item" href="/docs/4.11.1/overview/overview"> |
| Release 4.11.1 |
| |
| <span class="tag is-success">Stable</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/docs/4.11.0/overview/overview"> |
| Release 4.11.0 |
| |
| </a> |
| |
| <a class="navbar-item" href="/docs/4.10.0/overview/overview"> |
| Release 4.10.0 |
| |
| </a> |
| |
| |
| <a class="navbar-item" href="/archives/docs/r4.9.2"> |
| Release 4.9.2 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.9.1"> |
| Release 4.9.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.9.0"> |
| Release 4.9.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.8.2"> |
| Release 4.8.2 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.8.1"> |
| Release 4.8.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.8.0"> |
| Release 4.8.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.7.3"> |
| Release 4.7.3 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.7.2"> |
| Release 4.7.2 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.7.1"> |
| Release 4.7.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.7.0"> |
| Release 4.7.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.6.2"> |
| Release 4.6.2 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.6.1"> |
| Release 4.6.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.6.0"> |
| Release 4.6.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.5.1"> |
| Release 4.5.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.5.0"> |
| Release 4.5.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.4.0"> |
| Release 4.4.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.3.2"> |
| Release 4.3.2 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.3.1"> |
| Release 4.3.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.3.0"> |
| Release 4.3.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.2.4"> |
| Release 4.2.4 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.2.3"> |
| Release 4.2.3 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.2.2"> |
| Release 4.2.2 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.2.1"> |
| Release 4.2.1 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.2.0"> |
| Release 4.2.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.1.0"> |
| Release 4.1.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| <a class="navbar-item" href="/archives/docs/r4.0.0"> |
| Release 4.0.0 |
| |
| <span class="tag is-warning">EOL</span> |
| |
| </a> |
| |
| </div> |
| </div> |
| |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link">Community</a> |
| <div class="navbar-dropdown is-boxed"> |
| <a class="navbar-item" href="/community/mailing-lists">Mailing lists</a> |
| <a class="navbar-item" href="/community/slack">Slack</a> |
| <a class="navbar-item" href="https://github.com/apache/bookkeeper/issues">Github Issues</a> |
| <a class="navbar-item" href="/community/releases">Release Management</a> |
| <a class="navbar-item" href="/community/meeting">Community Meetings</a> |
| <hr class="dropdown-divider"> |
| <a class="navbar-item" href="/community/contributing">Contribution Guide</a> |
| <a class="navbar-item" href="/community/coding_guide">Coding Guide</a> |
| <a class="navbar-item" href="/community/testing">Testing Guide</a> |
| <a class="navbar-item" href="/community/issue-report">Issue Report Guide</a> |
| <a class="navbar-item" href="/community/release_guide">Release Guide</a> |
| <hr class="dropdown-divider"> |
| <a class="navbar-item" href="/community/presentations">Presentations</a> |
| <a class="navbar-item" href="/community/bookkeeper_proposals">BookKeeper Proposals</a> |
| </div> |
| </div> |
| |
| <div class="navbar-item has-dropdown is-hoverable"> |
| <a class="navbar-link">Project</a> |
| <div class="navbar-dropdown is-boxed"> |
| <a class="navbar-item" href="/project/who">Who are we?</a> |
| <a class="navbar-item" href="/project/bylaws">Bylaws</a> |
| <a class="navbar-item" href="http://www.apache.org/licenses/">License</a> |
| <hr class="dropdown-divider"> |
| <a class="navbar-item" href="/project/privacy">Privacy policy</a> |
| <a class="navbar-item" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> |
| <a class="navbar-item" href="http://www.apache.org/foundation/thanks.html">Thanks</a> |
| </div> |
| </div> |
| </div> |
| |
| <div class="navbar-end"> |
| <div class="navbar-item"> |
| <div class="field is-grouped"> |
| <p class="control"> |
| <a class="button bk-twitter" href="https://twitter.com/asfbookkeeper"> |
| <span class="icon"> |
| <i class="fa fa-twitter"></i> |
| </span> |
| <span>Twitter</span> |
| </a> |
| </p> |
| <p class="control"> |
| <a class="button" href="https://github.com/apache/bookkeeper"> |
| <span class="icon"> |
| <i class="fa fa-github"></i> |
| </span> |
| <span>GitHub</span> |
| </a> |
| </p> |
| <p class="control"> |
| <a class="button is-primary" href="/releases"> |
| <span class="icon"> |
| <i class="fa fa-download"></i> |
| </span> |
| <span>Download</span> |
| </a> |
| </p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </nav> |
| |
| |
| <div class="bk-docs-container"> |
| <div class="columns is-gapless"> |
| <div class="column is-2 is-hidden-mobile"> |
| <div class="container"> |
| |
| <aside class="sidebar"> |
| |
| <a class="button is-info"> |
| Version: 4.8.2 |
| </a> |
| <hr /> |
| |
| <p> |
| Getting started |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../getting-started/installation"> |
| Installation |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../getting-started/run-locally"> |
| Run bookies locally |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../getting-started/concepts"> |
| Concepts and architecture |
| </a> |
| </li> |
| |
| </ul> |
| |
| <p> |
| Deployment |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../deployment/manual"> |
| Manual deployment |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../deployment/dcos"> |
| BookKeeper on DC/OS |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../deployment/kubernetes"> |
| BookKeeper on Kubernetes |
| </a> |
| </li> |
| |
| </ul> |
| |
| <p> |
| Administration |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../admin/bookies"> |
| BookKeeper administration |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../admin/autorecovery"> |
| AutoRecovery |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../admin/metrics"> |
| Metric collection |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../admin/upgrade"> |
| Upgrade |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../admin/http"> |
| BookKeeper Admin REST API |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../admin/decomission"> |
| Decommissioning Bookies |
| </a> |
| </li> |
| |
| </ul> |
| |
| <p> |
| API |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../api/overview"> |
| Overview |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../api/ledger-api"> |
| Ledger API |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../api/ledger-adv-api"> |
| Advanced Ledger API |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../api/distributedlog-api"> |
| DistributedLog |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../api/javadoc"> |
| Java API Docs |
| </a> |
| </li> |
| |
| </ul> |
| |
| <p> |
| Security |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../security/overview"> |
| Overview |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../security/tls"> |
| TLS Authentication |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../security/sasl"> |
| SASL Authentication |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../security/zookeeper"> |
| ZooKeeper Authentication |
| </a> |
| </li> |
| |
| </ul> |
| |
| <p> |
| Development |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../development/protocol"> |
| BookKeeper protocol |
| </a> |
| </li> |
| |
| </ul> |
| |
| <p> |
| Reference |
| </p> |
| <ul class="sidebar-items"> |
| |
| |
| <li> |
| <a href="../../reference/config"> |
| Configuration |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../reference/cli"> |
| Command-line tools |
| </a> |
| </li> |
| |
| |
| <li> |
| <a href="../../reference/metrics"> |
| Metrics |
| </a> |
| </li> |
| |
| </ul> |
| |
| </aside> |
| |
| |
| </div> |
| </div> |
| |
| <div class="column is-8 bk-docs-block"> |
| <header class="docs-title"> |
| <nav class="level bk-level"> |
| <div class="level-left"> |
| <div class="level-item"> |
| <h1 class="title">BookKeeper Admin REST API</h1> |
| </div> |
| </div> |
| |
| </nav> |
| |
| |
| </header> |
| |
| <hr /> |
| |
| <div class="content"> |
| <section class="bk-main-content"> |
| <p>This document introduces BookKeeper HTTP endpoints, which can be used for BookKeeper administration. |
| To use this feature, set <code class="highlighter-rouge">httpServerEnabled</code> to <code class="highlighter-rouge">true</code> in file <code class="highlighter-rouge">conf/bk_server.conf</code>.</p> |
| |
| <h2 id="all-the-endpoints">All the endpoints</h2> |
| |
| <p>Currently all the HTTP endpoints could be divided into these 5 components:</p> |
| <ol> |
| <li>Heartbeat: heartbeat for a specific bookie.</li> |
| <li>Config: doing the server configuration for a specific bookie.</li> |
| <li>Ledger: HTTP endpoints related to ledgers.</li> |
| <li>Bookie: HTTP endpoints related to bookies.</li> |
| <li>AutoRecovery: HTTP endpoints related to auto recovery.</li> |
| </ol> |
| |
| <h2 id="heartbeat">Heartbeat</h2> |
| |
| <h3 id="endpoint-heartbeat">Endpoint: /heartbeat</h3> |
| <ul> |
| <li>Method: GET</li> |
| <li>Description: Get heartbeat status for a specific bookie</li> |
| <li>Response:</li> |
| </ul> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <h2 id="config">Config</h2> |
| |
| <h3 id="endpoint-apiv1configserver_config">Endpoint: /api/v1/config/server_config</h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get value of all configured values overridden on local server config</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| <li>Method: PUT |
| <ul> |
| <li>Description: Update a local server config</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">configName</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">Configuration name(key)</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">configValue</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">Configuration value(value)</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li>Body: |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"configName1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"configValue1"</span><span class="p">,</span><span class="w"> |
| </span><span class="nl">"configName2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"configValue2"</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h2 id="config-1">Config</h2> |
| |
| <h3 id="endpoint-metrics">Endpoint: /metrics</h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get all metrics by calling <code class="highlighter-rouge">writeAllMetrics()</code> of <code class="highlighter-rouge">statsProvider</code> internally</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h2 id="ledger">Ledger</h2> |
| |
| <h3 id="endpoint-apiv1ledgerdeleteledger_idledger_id">Endpoint: /api/v1/ledger/delete/?ledger_id=<ledger_id></h3> |
| <ol> |
| <li>Method: DELETE |
| <ul> |
| <li>Description: Delete a ledger.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">ledger_id</td> |
| <td style="text-align: left">Long</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">ledger id of the ledger.</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1ledgerlistprint_metadatametadata">Endpoint: /api/v1/ledger/list/?print_metadata=<metadata></h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: List all the ledgers.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">print_metadata</td> |
| <td style="text-align: left">Boolean</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">whether print out metadata</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"ledgerId1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ledgerMetadata1"</span><span class="p">,</span><span class="w"> |
| </span><span class="nl">"ledgerId2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ledgerMetadata2"</span><span class="p">,</span><span class="w"> |
| </span><span class="err">...</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1ledgermetadataledger_idledger_id">Endpoint: /api/v1/ledger/metadata/?ledger_id=<ledger_id></h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get the metadata of a ledger.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">ledger_id</td> |
| <td style="text-align: left">Long</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">ledger id of the ledger.</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"ledgerId1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"ledgerMetadata1"</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1ledgerreadledger_idledger_idstart_entry_idstart_entry_idend_entry_idend_entry_id">Endpoint: /api/v1/ledger/read/?ledger_id=<ledger_id>&start_entry_id=<start_entry_id>&end_entry_id=<end_entry_id></h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Read a range of entries from ledger.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">ledger_id</td> |
| <td style="text-align: left">Long</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">ledger id of the ledger.</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">start_entry_id</td> |
| <td style="text-align: left">Long</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">start entry id of read range.</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">end_entry_id</td> |
| <td style="text-align: left">Long</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">end entry id of read range.</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"entryId1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"entry content 1"</span><span class="p">,</span><span class="w"> |
| </span><span class="nl">"entryId2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"entry content 2"</span><span class="p">,</span><span class="w"> |
| </span><span class="err">...</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h2 id="bookie">Bookie</h2> |
| |
| <h3 id="endpoint-apiv1bookielist_bookiestypetypeprint_hostnameshostnames">Endpoint: /api/v1/bookie/list_bookies/?type=<type>&print_hostnames=<hostnames></h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get all the available bookies.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">type</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">value: “rw” or “ro” , list read-write/read-only bookies.</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">print_hostnames</td> |
| <td style="text-align: left">Boolean</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">whether print hostname of bookies.</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"bookieSocketAddress1"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hostname1"</span><span class="p">,</span><span class="w"> |
| </span><span class="nl">"bookieSocketAddress2"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hostname2"</span><span class="p">,</span><span class="w"> |
| </span><span class="err">...</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1bookielist_bookie_info">Endpoint: /api/v1/bookie/list_bookie_info</h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get bookies disk usage info of this cluster.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"bookieAddress"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="err">free:</span><span class="w"> </span><span class="err">xxx</span><span class="p">,</span><span class="w"> </span><span class="err">total:</span><span class="w"> </span><span class="err">xxx</span><span class="p">},</span><span class="w"> |
| </span><span class="nl">"bookieAddress"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="err">free:</span><span class="w"> </span><span class="err">xxx</span><span class="p">,</span><span class="w"> </span><span class="err">total:</span><span class="w"> </span><span class="err">xxx</span><span class="p">},</span><span class="w"> |
| </span><span class="err">...</span><span class="w"> |
| </span><span class="nl">"clusterInfo"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="err">total_free:</span><span class="w"> </span><span class="err">xxx</span><span class="p">,</span><span class="w"> </span><span class="err">total:</span><span class="w"> </span><span class="err">xxx</span><span class="p">}</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1bookielast_log_mark">Endpoint: /api/v1/bookie/last_log_mark</h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get the last log marker.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="err">JournalId</span><span class="mi">1</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="err">position</span><span class="mi">1</span><span class="p">,</span><span class="w"> |
| </span><span class="err">JournalId</span><span class="mi">2</span><span class="w"> </span><span class="err">:</span><span class="w"> </span><span class="err">position</span><span class="mi">2</span><span class="p">,</span><span class="w"> |
| </span><span class="err">...</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1bookielist_disk_filefile_typetype">Endpoint: /api/v1/bookie/list_disk_file/?file_type=<type></h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get all the files on disk of current bookie.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">type</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">file type: journal/entrylog/index.</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"journal files"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"filename1 filename2 ..."</span><span class="p">,</span><span class="w"> |
| </span><span class="nl">"entrylog files"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"filename1 filename2..."</span><span class="p">,</span><span class="w"> |
| </span><span class="nl">"index files"</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="s2">"filename1 filename2 ..."</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1bookieexpand_storage">Endpoint: /api/v1/bookie/expand_storage</h3> |
| <ol> |
| <li>Method: PUT |
| <ul> |
| <li>Description: Expand storage for a bookie.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1bookiegc">Endpoint: /api/v1/bookie/gc</h3> |
| <ol> |
| <li>Method: PUT |
| <ul> |
| <li>Description: trigger gc for this bookie.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h2 id="auto-recovery">Auto recovery</h2> |
| |
| <h3 id="endpoint-apiv1autorecoverybookie">Endpoint: /api/v1/autorecovery/bookie/</h3> |
| <ol> |
| <li>Method: PUT |
| <ul> |
| <li>Description: Ledger data recovery for failed bookie</li> |
| <li>Body: |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"bookie_src"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">"bookie_src1"</span><span class="p">,</span><span class="w"> </span><span class="s2">"bookie_src2"</span><span class="err">...</span><span class="w"> </span><span class="p">],</span><span class="w"> |
| </span><span class="nl">"bookie_dest"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">"bookie_dest1"</span><span class="p">,</span><span class="w"> </span><span class="s2">"bookie_dest2"</span><span class="err">...</span><span class="w"> </span><span class="p">],</span><span class="w"> |
| </span><span class="nl">"delete_cookie"</span><span class="p">:</span><span class="w"> </span><span class="err"><bool_value></span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">bookie_src</td> |
| <td style="text-align: left">Strings</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">bookie source to recovery</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">bookie_dest</td> |
| <td style="text-align: left">Strings</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">bookie data recovery destination</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">delete_cookie</td> |
| <td style="text-align: left">Boolean</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">Whether delete cookie</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1autorecoverylist_under_replicated_ledgermissingreplicabookie_addressexcludingmissingreplicabookie_address">Endpoint: /api/v1/autorecovery/list_under_replicated_ledger/?missingreplica=<bookie_address>&excludingmissingreplica=<bookie_address></h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get all under replicated ledgers.</li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">missingreplica</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">missing replica bookieId</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">excludingmissingreplica</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">No</td> |
| <td style="text-align: left">exclude missing replica bookieId</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="p">[</span><span class="err">ledgerId</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="err">ledgerId</span><span class="mi">2</span><span class="err">...</span><span class="p">]</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1autorecoverywho_is_auditor">Endpoint: /api/v1/autorecovery/who_is_auditor</h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get auditor bookie id.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response Body format:</p> |
| |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"Auditor"</span><span class="p">:</span><span class="w"> </span><span class="s2">"hostname/hostAddress:Port"</span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1autorecoverytrigger_audit">Endpoint: /api/v1/autorecovery/trigger_audit</h3> |
| <ol> |
| <li>Method: PUT |
| <ul> |
| <li>Description: Force trigger audit by resting the lostBookieRecoveryDelay.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1autorecoverylost_bookie_recovery_delay">Endpoint: /api/v1/autorecovery/lost_bookie_recovery_delay</h3> |
| <ol> |
| <li>Method: GET |
| <ul> |
| <li>Description: Get lostBookieRecoveryDelay value in seconds.</li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| <li>Method: PUT |
| <ul> |
| <li>Description: Set lostBookieRecoveryDelay value in seconds.</li> |
| <li>Body: |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"delay_seconds"</span><span class="p">:</span><span class="w"> </span><span class="err"><delay_seconds></span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">delay_seconds</td> |
| <td style="text-align: left">Long</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">set delay value in seconds.</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| <h3 id="endpoint-apiv1autorecoverydecommission">Endpoint: /api/v1/autorecovery/decommission</h3> |
| <ol> |
| <li>Method: PUT |
| <ul> |
| <li>Description: Decommission Bookie, Force trigger Audit task and make sure all the ledgers stored in the decommissioning bookie are replicated.</li> |
| <li>Body: |
| <div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="w"> </span><span class="p">{</span><span class="w"> |
| </span><span class="nl">"bookie_src"</span><span class="p">:</span><span class="w"> </span><span class="err"><bookie_src></span><span class="w"> |
| </span><span class="p">}</span><span class="w"> |
| </span></code></pre></div> </div> |
| </li> |
| <li> |
| <p>Parameters:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Name</th> |
| <th style="text-align: left">Type</th> |
| <th style="text-align: left">Required</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">bookie_src</td> |
| <td style="text-align: left">String</td> |
| <td style="text-align: left">Yes</td> |
| <td style="text-align: left">Bookie src to decommission..</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li> |
| <p>Response:</p> |
| |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: left">Code</th> |
| <th style="text-align: left">Description</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: left">200</td> |
| <td style="text-align: left">Successful operation</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">403</td> |
| <td style="text-align: left">Permission denied</td> |
| </tr> |
| <tr> |
| <td style="text-align: left">404</td> |
| <td style="text-align: left">Not found</td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </li> |
| </ol> |
| |
| </section> |
| |
| |
| </div> |
| </div> |
| |
| <div class="column is-2 is-hidden-mobile"> |
| |
| |
| <div class="toc"> |
| <h2 class="title">BookKeeper Admin REST API</h2> |
| <ul class="section-nav"> |
| <li class="toc-entry toc-h2"><a href="#all-the-endpoints">All the endpoints</a></li> |
| <li class="toc-entry toc-h2"><a href="#heartbeat">Heartbeat</a> |
| <ul> |
| <li class="toc-entry toc-h3"><a href="#endpoint-heartbeat">Endpoint: /heartbeat</a></li> |
| </ul> |
| </li> |
| <li class="toc-entry toc-h2"><a href="#config">Config</a> |
| <ul> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1configserver_config">Endpoint: /api/v1/config/server_config</a></li> |
| </ul> |
| </li> |
| <li class="toc-entry toc-h2"><a href="#config-1">Config</a> |
| <ul> |
| <li class="toc-entry toc-h3"><a href="#endpoint-metrics">Endpoint: /metrics</a></li> |
| </ul> |
| </li> |
| <li class="toc-entry toc-h2"><a href="#ledger">Ledger</a> |
| <ul> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1ledgerdeleteledger_idledger_id">Endpoint: /api/v1/ledger/delete/?ledger_id=<ledger_id></a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1ledgerlistprint_metadatametadata">Endpoint: /api/v1/ledger/list/?print_metadata=<metadata></a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1ledgermetadataledger_idledger_id">Endpoint: /api/v1/ledger/metadata/?ledger_id=<ledger_id></a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1ledgerreadledger_idledger_idstart_entry_idstart_entry_idend_entry_idend_entry_id">Endpoint: /api/v1/ledger/read/?ledger_id=<ledger_id>&start_entry_id=<start_entry_id>&end_entry_id=<end_entry_id></a></li> |
| </ul> |
| </li> |
| <li class="toc-entry toc-h2"><a href="#bookie">Bookie</a> |
| <ul> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1bookielist_bookiestypetypeprint_hostnameshostnames">Endpoint: /api/v1/bookie/list_bookies/?type=<type>&print_hostnames=<hostnames></a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1bookielist_bookie_info">Endpoint: /api/v1/bookie/list_bookie_info</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1bookielast_log_mark">Endpoint: /api/v1/bookie/last_log_mark</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1bookielist_disk_filefile_typetype">Endpoint: /api/v1/bookie/list_disk_file/?file_type=<type></a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1bookieexpand_storage">Endpoint: /api/v1/bookie/expand_storage</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1bookiegc">Endpoint: /api/v1/bookie/gc</a></li> |
| </ul> |
| </li> |
| <li class="toc-entry toc-h2"><a href="#auto-recovery">Auto recovery</a> |
| <ul> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1autorecoverybookie">Endpoint: /api/v1/autorecovery/bookie/</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1autorecoverylist_under_replicated_ledgermissingreplicabookie_addressexcludingmissingreplicabookie_address">Endpoint: /api/v1/autorecovery/list_under_replicated_ledger/?missingreplica=<bookie_address>&excludingmissingreplica=<bookie_address></a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1autorecoverywho_is_auditor">Endpoint: /api/v1/autorecovery/who_is_auditor</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1autorecoverytrigger_audit">Endpoint: /api/v1/autorecovery/trigger_audit</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1autorecoverylost_bookie_recovery_delay">Endpoint: /api/v1/autorecovery/lost_bookie_recovery_delay</a></li> |
| <li class="toc-entry toc-h3"><a href="#endpoint-apiv1autorecoverydecommission">Endpoint: /api/v1/autorecovery/decommission</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| |
| |
| |
| </div> |
| </div> |
| </div> |
| |
| |
| |
| <div id="entry-popover-html" class="popover-template"> |
| <p>An entry is a sequence of bytes (plus some metadata) written to a BookKeeper ledger. Entries are also known as records.</p> |
| |
| </div> |
| |
| <div id="ledger-popover-html" class="popover-template"> |
| <p>A ledger is a sequence of entries written to BookKeeper. Entries are written sequentially to ledgers and at most once, giving ledgers append-only semantics.</p> |
| |
| </div> |
| |
| <div id="bookie-popover-html" class="popover-template"> |
| <p>A bookie is an individual BookKeeper storage server.</p> |
| |
| <p>Bookies store the content of ledgers and act as a distributed ensemble.</p> |
| |
| </div> |
| |
| <div id="rereplication-popover-html" class="popover-template"> |
| <p>A subsystem that runs in the background on bookies to ensure that ledgers are fully replicated even if one bookie from the ensemble is down.</p> |
| |
| </div> |
| |
| <div id="striping-popover-html" class="popover-template"> |
| <p>Striping is the process of distributing BookKeeper ledgers to sub-groups of bookies rather than to all bookies in a BookKeeper ensemble.</p> |
| |
| <p>Striping is essential to ensuring fast performance.</p> |
| |
| </div> |
| |
| <div id="striped-popover-html" class="popover-template"> |
| <p>Striping is the process of distributing BookKeeper ledgers to sub-groups of bookies rather than to all bookies in a BookKeeper ensemble.</p> |
| |
| <p>Striping is essential to ensuring fast performance.</p> |
| |
| </div> |
| |
| <div id="journal-popover-html" class="popover-template"> |
| <p>A journal file stores BookKeeper transaction logs.</p> |
| |
| </div> |
| |
| <div id="fencing-popover-html" class="popover-template"> |
| <p>When a reader forces a ledger to close, preventing any further entries from being written to the ledger.</p> |
| |
| </div> |
| |
| <div id="record-popover-html" class="popover-template"> |
| <p>A record is a sequence of bytes (plus some metadata) written to a BookKeeper ledger. Records are also known as entries.</p> |
| |
| </div> |
| |
| |
| <script type="text/javascript"> |
| |
| tippy('#entry-popover', { |
| html: '#entry-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#ledger-popover', { |
| html: '#ledger-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#bookie-popover', { |
| html: '#bookie-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#rereplication-popover', { |
| html: '#rereplication-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#striping-popover', { |
| html: '#striping-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#striped-popover', { |
| html: '#striped-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#journal-popover', { |
| html: '#journal-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#fencing-popover', { |
| html: '#fencing-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| tippy('#record-popover', { |
| html: '#record-popover-html', |
| arrow: true, |
| animation: 'fade' |
| }); |
| |
| </script> |
| |
| </main> |
| |
| <footer class="footer"> |
| <div class="container"> |
| <div class="content has-text-centered"> |
| <p> |
| Copyright © 2016 - 2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>,<br /> licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, version 2.0</a>. |
| </p> |
| <p> |
| Apache BookKeeper, BookKeeper®, Apache®, the Apache feature logo, and the Apache BookKeeper logo are either registered trademarks or trademarks of The Apache Software Foundation. |
| </p> |
| </div> |
| </div> |
| </footer> |
| |
| </body> |
| |
| <script src="/js/app.js"></script> |
| |
| |
| <!-- |
| 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. |
| --> |
| <script> |
| (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
| (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
| m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
| })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); |
| |
| ga('create', 'UA-104419626-1', 'auto'); |
| ga('send', 'pageview'); |
| |
| </script> |
| |
| |
| </html> |