blob: 1bdc473931cf4f29592253c4e572f053d3edf30b [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Manage packages · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="&gt; **Important**"/><meta name="docsearch:version" content="2.9.1"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Manage packages · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content="&gt; **Important**"/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.apache.org/blog/atom.xml" title="Apache Pulsar Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://pulsar.apache.org/blog/feed.xml" title="Apache Pulsar Blog RSS Feed"/><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en"><img class="logo" src="/img/pulsar.svg" alt="Apache Pulsar"/></a><a href="/en/versions"><h3>2.9.1</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/en/2.9.1/getting-started-standalone" target="_self">Docs</a></li><li class=""><a href="/en/download" target="_self">Download</a></li><li class="siteNavGroupActive"><a href="/docs/en/2.9.1/client-libraries" target="_self">Clients</a></li><li class=""><a href="#restapis" target="_self">REST APIs</a></li><li class=""><a href="#cli" target="_self">Cli</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="#community" target="_self">Community</a></li><li class=""><a href="#apache" target="_self">Apache</a></li><li class=""><a href="https://pulsar-next.staged.apache.org/" target="_self">New Website (Beta)</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>English</a><div id="languages-dropdown" class="hide"><ul id="languages-dropdown-items"><li><a href="/docs/ja/2.9.1/admin-api-packages">日本語</a></li><li><a href="/docs/fr/2.9.1/admin-api-packages">Français</a></li><li><a href="/docs/ko/2.9.1/admin-api-packages">한국어</a></li><li><a href="/docs/zh-CN/2.9.1/admin-api-packages">中文</a></li><li><a href="/docs/zh-TW/2.9.1/admin-api-packages">繁體中文</a></li><li><a href="https://crowdin.com/project/apache-pulsar" target="_blank" rel="noreferrer noopener">Help Translate</a></li></ul></div></li><script>
const languagesMenuItem = document.getElementById("languages-menu");
const languagesDropDown = document.getElementById("languages-dropdown");
languagesMenuItem.addEventListener("click", function(event) {
event.preventDefault();
if (languagesDropDown.className == "hide") {
languagesDropDown.className = "visible";
} else {
languagesDropDown.className = "hide";
}
});
</script></span></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>Admin API</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">Get Started</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/getting-started-standalone">Run Pulsar locally</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/getting-started-docker">Run Pulsar in Docker</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/getting-started-helm">Run Pulsar in Kubernetes</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Concepts and Architecture</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-messaging">Messaging</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-architecture-overview">Architecture</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-clients">Clients</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-replication">Geo Replication</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-multi-tenancy">Multi Tenancy</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-authentication">Authentication and Authorization</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-topic-compaction">Topic Compaction</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-proxy-sni-routing">Proxy support with SNI routing</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/concepts-multiple-advertised-listeners">Multiple advertised listeners</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar Schema</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/schema-get-started">Get started</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/schema-understand">Understand schema</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/schema-evolution-compatibility">Schema evolution and compatibility</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/schema-manage">Manage schema</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar Functions</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-runtime">Setup: Configure Functions runtime</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-worker">Setup: Pulsar Functions Worker</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-develop">How-to: Develop</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-package">How-to: Package</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-debug">How-to: Debug</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-deploy">How-to: Deploy</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/functions-cli">Reference: CLI</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/window-functions-context">Window Functions: Context</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar IO</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-quickstart">Get started</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-use">Use</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-debug">Debug</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-connectors">Built-in connector</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-cdc">CDC connector</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-develop">Develop</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/io-cli">CLI</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar SQL</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/sql-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/sql-getting-started">Query data</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/sql-deployment-configurations">Configuration and deployment</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/sql-rest-api">REST APIs</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Tiered Storage</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/tiered-storage-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/tiered-storage-aws">AWS S3 offloader</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/tiered-storage-gcs">GCS offloader</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/tiered-storage-filesystem">Filesystem offloader</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/tiered-storage-azure">Azure BlobStore offloader</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/tiered-storage-aliyun">Aliyun OSS offloader</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Transactions</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/txn-why">Why transactions?</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/txn-what">What are transactions?</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/txn-how">How transactions work?</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/txn-use">How to use transactions?</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/txn-monitor">How to monitor transactions?</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Kubernetes (Helm)</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/helm-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/helm-prepare">Prepare</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/helm-install">Install</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/helm-deploy">Deployment</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/helm-upgrade">Upgrade</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/helm-tools">Required Tools</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Deployment</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/deploy-aws">Amazon Web Services</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/deploy-kubernetes">Kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/deploy-bare-metal">Bare metal</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/deploy-bare-metal-multi-cluster">Bare metal multi-cluster</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/deploy-docker">Docker</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/deploy-monitoring">Monitor</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Administration</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-zk-bk">ZooKeeper and BookKeeper</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-geo">Geo-replication</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-pulsar-manager">Pulsar Manager</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-stats">Pulsar statistics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-load-balance">Load balance</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-proxy">Pulsar proxy</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-upgrade">Upgrade</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/administration-isolation">Pulsar isolation</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Security</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-tls-transport">Transport Encryption using TLS</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-tls-authentication">Authentication using TLS</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-tls-keystore">Using TLS with KeyStore configure</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-jwt">Authentication using JWT</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-athenz">Authentication using Athenz</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-kerberos">Authentication using Kerberos</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-oauth2">Authentication using OAuth 2.0 access tokens</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-authorization">Authorization and ACLs</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-encryption">End-to-End Encryption</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-extending">Extending</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/security-bouncy-castle">Bouncy Castle Providers</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Performance</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/performance-pulsar-perf">Pulsar Perf</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Client Libraries</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-java">Java</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-go">Go</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-python">Python</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-cpp">C++</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-node">Node.js</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-websocket">WebSocket</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/client-libraries-dotnet">C#</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Admin API</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-clusters">Clusters</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-tenants">Tenants</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-brokers">Brokers</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-namespaces">Namespaces</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-permissions">Permissions</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-topics">Topics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/admin-api-functions">Functions</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/en/2.9.1/admin-api-packages">Packages</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Adaptors</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/adaptors-kafka">Kafka client wrapper</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/adaptors-spark">Apache Spark</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/adaptors-storm">Apache Storm</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Cookbooks</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-compaction">Topic compaction</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-deduplication">Message deduplication</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-non-persistent">Non-persistent messaging</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-retention-expiry">Message retention and expiry</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-encryption">Encryption</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-message-queue">Message queue</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/cookbooks-bookkeepermetadata">BookKeeper Ledger Metadata</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Development</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/develop-tools">Simulation tools</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/developing-binary-protocol">Binary protocol</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/develop-schema">Custom schema storage</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/develop-load-manager">Modular load manager</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Reference</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/reference-terminology">Terminology</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/reference-cli-tools">Pulsar CLI tools</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/reference-configuration">Pulsar configuration</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.9.1/reference-metrics">Pulsar Metrics</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/admin-api-packages.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Manage packages</h1></header><article><div><span><blockquote>
<p><strong>Important</strong></p>
<p>This page only shows <strong>some frequently used operations</strong>.</p>
<ul>
<li><p>For the latest and complete information about <code>Pulsar admin</code>, including commands, flags, descriptions, and more, see <a href="https://pulsar.apache.org/tools/pulsar-admin/">Pulsar admin doc</a></p></li>
<li><p>For the latest and complete information about <code>REST API</code>, including parameters, responses, samples, and more, see <a href="https://pulsar.apache.org/admin-rest-api#/">REST</a>
API doc.</p></li>
<li><p>For the latest and complete information about <code>Java admin API</code>, including classes, methods, descriptions, and more, see <a href="https://pulsar.apache.org/api/admin/2.9.0-SNAPSHOT/">Java admin API doc</a>.</p></li>
</ul>
</blockquote>
<p>Package management enables version management and simplifies the upgrade and rollback processes for Functions, Sinks, and Sources. When you use the same function, sink and source in different namespaces, you can upload them to a common package management system.</p>
<h2><a class="anchor" aria-hidden="true" id="package-name"></a><a href="#package-name" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Package name</h2>
<p>A <code>package</code> is identified by five parts: <code>type</code>, <code>tenant</code>, <code>namespace</code>, <code>package name</code>, and <code>version</code>.</p>
<table>
<thead>
<tr><th>Part</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td><code>type</code></td><td>The type of the package. The following types are supported: <code>function</code>, <code>sink</code> and <code>source</code>.</td></tr>
<tr><td><code>name</code></td><td>The fully qualified name of the package: <code>&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;</code>.</td></tr>
<tr><td><code>version</code></td><td>The version of the package.</td></tr>
</tbody>
</table>
<p>The following is a code sample.</p>
<pre><code class="hljs css language-java"><span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">PackageName</span> </span>{
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> PackageType type;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String namespace;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String tenant;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String name;
<span class="hljs-keyword">private</span> <span class="hljs-keyword">final</span> String version;
}
<span class="hljs-keyword">enum</span> PackageType {
FUNCTION(<span class="hljs-string">"function"</span>), SINK(<span class="hljs-string">"sink"</span>), SOURCE(<span class="hljs-string">"source"</span>);
}
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="package-url"></a><a href="#package-url" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Package URL</h2>
<p>A package is located using a URL. The package URL is written in the following format:</p>
<pre><code class="hljs css language-shell">&lt;type&gt;://&lt;tenant&gt;/&lt;namespace&gt;/&lt;package name&gt;@&lt;version&gt;
</code></pre>
<p>The following are package URL examples:</p>
<p><code>sink://public/default/mysql-sink@1.0</code> <br>
<code>function://my-tenant/my-ns/my-function@0.1</code> <br>
<code>source://my-tenant/my-ns/mysql-cdc-source@2.3</code></p>
<p>The package management system stores the data, versions and metadata of each package. The metadata is shown in the following table.</p>
<table>
<thead>
<tr><th>metadata</th><th>Description</th></tr>
</thead>
<tbody>
<tr><td>description</td><td>The description of the package.</td></tr>
<tr><td>contact</td><td>The contact information of a package. For example, team email.</td></tr>
<tr><td>create_time</td><td>The time when the package is created.</td></tr>
<tr><td>modification_time</td><td>The time when the package is modified.</td></tr>
<tr><td>properties</td><td>A key/value map that stores your own information.</td></tr>
</tbody>
</table>
<h2><a class="anchor" aria-hidden="true" id="permissions"></a><a href="#permissions" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Permissions</h2>
<p>The packages are organized by the tenant and namespace, so you can apply the tenant and namespace permissions to packages directly.</p>
<h2><a class="anchor" aria-hidden="true" id="package-resources"></a><a href="#package-resources" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Package resources</h2>
<p>You can use the package management with command line tools, REST API and Java client.</p>
<h3><a class="anchor" aria-hidden="true" id="upload-a-package"></a><a href="#upload-a-package" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Upload a package</h3>
<p>You can upload a package to the package management service in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2501-tab-2502" class="nav-link active" data-group="group_2501" data-tab="tab-group-2501-content-2502">pulsar-admin</div><div id="tab-group-2501-tab-2503" class="nav-link" data-group="group_2501" data-tab="tab-group-2501-content-2503">REST API</div><div id="tab-group-2501-tab-2504" class="nav-link" data-group="group_2501" data-tab="tab-group-2501-content-2504">JAVA</div></div><div class="tab-content"><div id="tab-group-2501-content-2502" class="tab-pane active" data-group="group_2501" tabindex="-1"><div><span><pre><code class="hljs css language-shell">bin/pulsar-admin packages upload functions://public/default/example@v0.1 --path package-file --description package-description<br /></code></pre>
</span></div></div><div id="tab-group-2501-content-2503" class="tab-pane" data-group="group_2501" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.1&amp;apiVersion=v3"><b>POST</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2501-content-2504" class="tab-pane" data-group="group_2501" tabindex="-1"><div><span><p>Upload a package to the package management service synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">upload</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>Upload a package to the package management service asynchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">uploadAsync</span><span class="hljs-params">(PackageMetadata metadata, String packageName, String path)</span></span>;<br /></code></pre>
</span></div></div></div></div>
<h3><a class="anchor" aria-hidden="true" id="download-a-package"></a><a href="#download-a-package" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Download a package</h3>
<p>You can download a package to the package management service in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2505-tab-2506" class="nav-link active" data-group="group_2505" data-tab="tab-group-2505-content-2506">pulsar-admin</div><div id="tab-group-2505-tab-2507" class="nav-link" data-group="group_2505" data-tab="tab-group-2505-content-2507">REST API</div><div id="tab-group-2505-tab-2508" class="nav-link" data-group="group_2505" data-tab="tab-group-2505-content-2508">JAVA</div></div><div class="tab-content"><div id="tab-group-2505-content-2506" class="tab-pane active" data-group="group_2505" tabindex="-1"><div><span><pre><code class="hljs css language-shell">bin/pulsar-admin packages download functions://public/default/example@v0.1 --path package-file<br /></code></pre>
</span></div></div><div id="tab-group-2505-content-2507" class="tab-pane" data-group="group_2505" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2505-content-2508" class="tab-pane" data-group="group_2505" tabindex="-1"><div><span><p>Download a package to the package management service synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">download</span><span class="hljs-params">(String packageName, String path)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>Download a package to the package management service asynchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">downloadAsync</span><span class="hljs-params">(String packageName, String path)</span></span>;<br /></code></pre>
</span></div></div></div></div>
<h3><a class="anchor" aria-hidden="true" id="list-all-versions-of-a-package"></a><a href="#list-all-versions-of-a-package" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>List all versions of a package</h3>
<p>You can get a list of all versions of a package in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2509-tab-2510" class="nav-link active" data-group="group_2509" data-tab="tab-group-2509-content-2510">pulsar-admin</div><div id="tab-group-2509-tab-2511" class="nav-link" data-group="group_2509" data-tab="tab-group-2509-content-2511">REST API</div><div id="tab-group-2509-tab-2512" class="nav-link" data-group="group_2509" data-tab="tab-group-2509-content-2512">JAVA</div></div><div class="tab-content"><div id="tab-group-2509-content-2510" class="tab-pane active" data-group="group_2509" tabindex="-1"><div><span><pre><code class="hljs css language-shell">bin/pulsar-admin packages list --type function public/default<br /></code></pre>
</span></div></div><div id="tab-group-2509-content-2511" class="tab-pane" data-group="group_2509" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.9.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2509-content-2512" class="tab-pane" data-group="group_2509" tabindex="-1"><div><span><p>List all versions of a package synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackageVersions</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>List all versions of a package asynchronously.</p>
<pre><code class="hljs css language-java"> CompletableFuture&lt;List&lt;String&gt;&gt; listPackageVersionsAsync(String packageName);<br /></code></pre>
</span></div></div></div></div>
<h3><a class="anchor" aria-hidden="true" id="list-all-the-specified-type-packages-under-a-namespace"></a><a href="#list-all-the-specified-type-packages-under-a-namespace" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>List all the specified type packages under a namespace</h3>
<p>You can get a list of all the packages with the given type in a namespace in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2513-tab-2514" class="nav-link active" data-group="group_2513" data-tab="tab-group-2513-content-2514">pulsar-admin</div><div id="tab-group-2513-tab-2515" class="nav-link" data-group="group_2513" data-tab="tab-group-2513-content-2515">REST API</div><div id="tab-group-2513-tab-2516" class="nav-link" data-group="group_2513" data-tab="tab-group-2513-content-2516">JAVA</div></div><div class="tab-content"><div id="tab-group-2513-content-2514" class="tab-pane active" data-group="group_2513" tabindex="-1"><div><span><pre><code class="hljs css language-shell">bin/pulsar-admin packages list --type function public/default<br /></code></pre>
</span></div></div><div id="tab-group-2513-content-2515" class="tab-pane" data-group="group_2513" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/?version=2.9.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2513-content-2516" class="tab-pane" data-group="group_2513" tabindex="-1"><div><span><p>List all the packages with the given type in a namespace synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">List&lt;String&gt; <span class="hljs-title">listPackages</span><span class="hljs-params">(String type, String namespace)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>List all the packages with the given type in a namespace asynchronously.</p>
<pre><code class="hljs css language-java"> CompletableFuture&lt;List&lt;String&gt;&gt; listPackagesAsync(String type, String namespace);<br /></code></pre>
</span></div></div></div></div>
<h3><a class="anchor" aria-hidden="true" id="get-the-metadata-of-a-package"></a><a href="#get-the-metadata-of-a-package" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Get the metadata of a package</h3>
<p>You can get the metadata of a package in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2517-tab-2518" class="nav-link active" data-group="group_2517" data-tab="tab-group-2517-content-2518">pulsar-admin</div><div id="tab-group-2517-tab-2519" class="nav-link" data-group="group_2517" data-tab="tab-group-2517-content-2519">REST API</div><div id="tab-group-2517-tab-2520" class="nav-link" data-group="group_2517" data-tab="tab-group-2517-content-2520">JAVA</div></div><div class="tab-content"><div id="tab-group-2517-content-2518" class="tab-pane active" data-group="group_2517" tabindex="-1"><div><span><pre><code class="hljs css language-shell">bin/pulsar-admin packages get-metadata function://public/default/test@v1<br /></code></pre>
</span></div></div><div id="tab-group-2517-content-2519" class="tab-pane" data-group="group_2517" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.9.1&amp;apiVersion=v3"><b>GET</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2517-content-2520" class="tab-pane" data-group="group_2517" tabindex="-1"><div><span><p>Get the metadata of a package synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">PackageMetadata <span class="hljs-title">getMetadata</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>Get the metadata of a package asynchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">CompletableFuture&lt;PackageMetadata&gt; <span class="hljs-title">getMetadataAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
</span></div></div></div></div>
<h3><a class="anchor" aria-hidden="true" id="update-the-metadata-of-a-package"></a><a href="#update-the-metadata-of-a-package" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Update the metadata of a package</h3>
<p>You can update the metadata of a package in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2521-tab-2522" class="nav-link active" data-group="group_2521" data-tab="tab-group-2521-content-2522">pulsar-admin</div><div id="tab-group-2521-tab-2523" class="nav-link" data-group="group_2521" data-tab="tab-group-2521-content-2523">REST API</div><div id="tab-group-2521-tab-2524" class="nav-link" data-group="group_2521" data-tab="tab-group-2521-content-2524">JAVA</div></div><div class="tab-content"><div id="tab-group-2521-content-2522" class="tab-pane active" data-group="group_2521" tabindex="-1"><div><span><pre><code class="hljs css language-shell">bin/pulsar-admin packages update-metadata function://public/default/example@v0.1 --description update-description<br /></code></pre>
</span></div></div><div id="tab-group-2521-content-2523" class="tab-pane" data-group="group_2521" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.9.1&amp;apiVersion=v3"><b>PUT</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/metadata/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2521-content-2524" class="tab-pane" data-group="group_2521" tabindex="-1"><div><span><p>Update a package metadata information synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">updateMetadata</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>Update a package metadata information asynchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">updateMetadataAsync</span><span class="hljs-params">(String packageName, PackageMetadata metadata)</span></span>;<br /></code></pre>
</span></div></div></div></div>
<h3><a class="anchor" aria-hidden="true" id="delete-a-specified-package"></a><a href="#delete-a-specified-package" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Delete a specified package</h3>
<p>You can delete a specified package with its package name in the following ways.</p>
<div class="tabs"><div class="nav-tabs"><div id="tab-group-2525-tab-2526" class="nav-link active" data-group="group_2525" data-tab="tab-group-2525-content-2526">pulsar-admin</div><div id="tab-group-2525-tab-2527" class="nav-link" data-group="group_2525" data-tab="tab-group-2525-content-2527">REST API</div><div id="tab-group-2525-tab-2528" class="nav-link" data-group="group_2525" data-tab="tab-group-2525-content-2528">JAVA</div></div><div class="tab-content"><div id="tab-group-2525-content-2526" class="tab-pane active" data-group="group_2525" tabindex="-1"><div><span><p>The following command example deletes a package of version 0.1.</p>
<pre><code class="hljs css language-shell">bin/pulsar-admin packages delete functions://public/default/example@v0.1<br /></code></pre>
</span></div></div><div id="tab-group-2525-content-2527" class="tab-pane" data-group="group_2525" tabindex="-1"><div><span><p><a href="https://pulsar.apache.org/admin-rest-api#/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.1&amp;apiVersion=v3"><b>DELETE</b> <i>/admin/v3/packages/:type/:tenant/:namespace/:packageName/:version/?version=2.9.1</i></a>
</p>
</span></div></div><div id="tab-group-2525-content-2528" class="tab-pane" data-group="group_2525" tabindex="-1"><div><span><p>Delete a specified package synchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(String packageName)</span> <span class="hljs-keyword">throws</span> PulsarAdminException</span>;<br /></code></pre>
<p>Delete a specified package asynchronously.</p>
<pre><code class="hljs css language-java"> <span class="hljs-function">CompletableFuture&lt;Void&gt; <span class="hljs-title">deleteAsync</span><span class="hljs-params">(String packageName)</span></span>;<br /></code></pre>
</span></div></div></div></div>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.9.1/admin-api-functions"><span class="arrow-prev"></span><span>Functions</span></a><a class="docs-next button" href="/docs/en/2.9.1/adaptors-kafka"><span>Kafka client wrapper</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#package-name">Package name</a></li><li><a href="#package-url">Package URL</a></li><li><a href="#permissions">Permissions</a></li><li><a href="#package-resources">Package resources</a><ul class="toc-headings"><li><a href="#upload-a-package">Upload a package</a></li><li><a href="#download-a-package">Download a package</a></li><li><a href="#list-all-versions-of-a-package">List all versions of a package</a></li><li><a href="#list-all-the-specified-type-packages-under-a-namespace">List all the specified type packages under a namespace</a></li><li><a href="#get-the-metadata-of-a-package">Get the metadata of a package</a></li><li><a href="#update-the-metadata-of-a-package">Update the metadata of a package</a></li><li><a href="#delete-a-specified-package">Delete a specified package</a></li></ul></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2022 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
const community = document.querySelector("a[href='#community']").parentNode;
const communityMenu =
'<li>' +
'<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
'<div id="community-dropdown" class="hide">' +
'<ul id="community-dropdown-items">' +
'<li><a href="/en/contact">Contact</a></li>' +
'<li><a href="/en/contributing">Contributing</a></li>' +
'<li><a href="/en/coding-guide">Coding guide</a></li>' +
'<li><a href="/en/events">Events</a></li>' +
'<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
'<li><a href="https://github.com/apache/pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
'<li><a href="https://github.com/apache/pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
'<li><a href="https://pulsar-summit.org/" target="_blank">Pulsar Summit &#x2750</a></li>' +
'<li>&nbsp;</li>' +
'<li><a href="/en/resources">Resources</a></li>' +
'<li><a href="/en/team">Team</a></li>' +
'<li><a href="/en/powered-by">Powered By</a></li>' +
'</ul>' +
'</div>' +
'</li>';
community.innerHTML = communityMenu;
const communityMenuItem = document.getElementById("community-menu");
const communityDropDown = document.getElementById("community-dropdown");
communityMenuItem.addEventListener("click", function(event) {
event.preventDefault();
if (communityDropDown.className == 'hide') {
communityDropDown.className = 'visible';
} else {
communityDropDown.className = 'hide';
}
});
</script></span></footer></div><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script></body></html>