You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by li...@apache.org on 2023/04/10 03:13:54 UTC
[pulsar-site] branch main updated: [improve][doc] relocate "Get Started" (pulsar-admin) to admin API and correct inaccurate descriptions (#504)
This is an automated email from the ASF dual-hosted git repository.
liuyu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
The following commit(s) were added to refs/heads/main by this push:
new 923ec4c5c1b [improve][doc] relocate "Get Started" (pulsar-admin) to admin API and correct inaccurate descriptions (#504)
923ec4c5c1b is described below
commit 923ec4c5c1b0aee3213a1665c1103d2a17276f26
Author: Anonymitaet <50...@users.noreply.github.com>
AuthorDate: Mon Apr 10 11:13:48 2023 +0800
[improve][doc] relocate "Get Started" (pulsar-admin) to admin API and correct inaccurate descriptions (#504)
---
docs/admin-api-clusters.md | 32 +---
docs/admin-api-functions.md | 72 ++++-----
docs/admin-api-schemas.md | 48 +++---
docs/admin-get-started.md | 347 +++++++++++++++++++++++++++++++++++++-------
docs/how-to-landing.md | 3 +-
sidebars.json | 3 +-
6 files changed, 362 insertions(+), 143 deletions(-)
diff --git a/docs/admin-api-clusters.md b/docs/admin-api-clusters.md
index fcfbf5deee7..38e2cabc4a6 100644
--- a/docs/admin-api-clusters.md
+++ b/docs/admin-api-clusters.md
@@ -21,6 +21,8 @@ Category|Method|If you want to manage clusters...
[Pulsar admin APIs](admin-api-overview.md)| {@inject: rest:REST API:/}, which lists all parameters, responses, samples, and more.|See the `/admin/v2/clusters` endpoint
[Pulsar admin APIs](admin-api-overview.md)|[Java admin API](/api/admin/), which lists all classes, methods, descriptions, and more.|See the `clusters` method of the `PulsarAdmin` object
+You can perform the following operations on [clusters](reference-terminology.md#cluster).
+
## Provision cluster
You can provision new clusters using the admin interface.
@@ -260,33 +262,3 @@ admin.clusters().deleteCluster(clusterName);
</Tabs>
````
-
-
-
-:::tip
-
-This page only shows **some frequently used operations**. For the latest and complete information, see the **reference docs** below.
-
- - [Pulsar CLI](reference-cli-tools.md)
-
- - [pulsar-admin](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/), which lists all commands, flags, descriptions, and more.
-
- - [Pulsar admin APIs](admin-api-overview.md)
-
- - {@inject: rest:REST API:/}, which lists all parameters, responses, samples, and more.
-
- - [Java admin API](/api/admin/), which lists all classes, methods, descriptions, and more.
-
-:::
-
-You can manage [clusters](reference-terminology.md#cluster) via one of the following methods:
-
-* [Pulsar CLI](reference-cli-tools.md)
-
- * [pulsar-admin](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/): the `clusters` command
-
-* [Pulsar admin APIs](admin-api-overview.md)
-
- * {@inject: rest:REST API:/}: the `/admin/v2/clusters` endpoint
-
- * [Java admin API](/api/admin/): the `clusters` method of the `PulsarAdmin` object
diff --git a/docs/admin-api-functions.md b/docs/admin-api-functions.md
index b6dfbb34e65..72750f69d81 100644
--- a/docs/admin-api-functions.md
+++ b/docs/admin-api-functions.md
@@ -30,7 +30,7 @@ You can create a Pulsar function in cluster mode (deploy it on a Pulsar cluster)
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`create`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=create) subcommand.
@@ -54,7 +54,7 @@ pulsar-admin functions create \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName|operation/registerFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
FunctionConfig functionConfig = new FunctionConfig();
@@ -84,7 +84,7 @@ You can update a Pulsar function that has been deployed to a Pulsar cluster usin
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`update`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=update) subcommand.
@@ -106,7 +106,7 @@ pulsar-admin functions update \
{@inject: endpoint|PUT|/admin/v3/functions/:tenant/:namespace/:functionName|operation/updateFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
FunctionConfig functionConfig = new FunctionConfig();
@@ -136,7 +136,7 @@ You can start a stopped function instance with `instance-id` using Admin CLI, RE
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`start`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=start) subcommand.
@@ -155,7 +155,7 @@ pulsar-admin functions start \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/:instanceId/start|operation/startFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().startFunction(tenant, namespace, functionName, Integer.parseInt(instanceId));
@@ -173,7 +173,7 @@ You can start all stopped function instances using Admin CLI, REST API or Java A
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`start`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=start) subcommand.
@@ -193,7 +193,7 @@ pulsar-admin functions start \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/start|operation/startFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().startFunction(tenant, namespace, functionName);
@@ -215,7 +215,7 @@ You can stop a function instance with `instance-id` using Admin CLI, REST API or
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`stop`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=stop) subcommand.
@@ -236,7 +236,7 @@ pulsar-admin functions stop \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/:instanceId/stop|operation/stopFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().stopFunction(tenant, namespace, functionName, Integer.parseInt(instanceId));
@@ -254,7 +254,7 @@ You can stop all function instances using Admin CLI, REST API or Java Admin API.
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`stop`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=stop) subcommand.
@@ -274,7 +274,7 @@ pulsar-admin functions stop \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/stop|operation/stopFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().stopFunction(tenant, namespace, functionName);
@@ -296,7 +296,7 @@ Restart a function instance with `instance-id` using Admin CLI, REST API or Java
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`restart`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=restart) subcommand.
@@ -317,7 +317,7 @@ pulsar-admin functions restart \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/:instanceId/restart|operation/restartFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().restartFunction(tenant, namespace, functionName, Integer.parseInt(instanceId));
@@ -335,7 +335,7 @@ You can restart all function instances using Admin CLI, REST API or Java admin A
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`restart`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=restart) subcommand.
@@ -355,7 +355,7 @@ pulsar-admin functions restart \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/restart|operation/restartFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().restartFunction(tenant, namespace, functionName);
@@ -373,7 +373,7 @@ You can list all Pulsar functions running under a specific tenant and namespace
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`list`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=list) subcommand.
@@ -392,7 +392,7 @@ pulsar-admin functions list \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace|operation/listFunctions?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunctions(tenant, namespace);
@@ -410,7 +410,7 @@ You can delete a Pulsar function that is running on a Pulsar cluster using Admin
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`delete`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=delete) subcommand.
@@ -430,7 +430,7 @@ pulsar-admin functions delete \
{@inject: endpoint|DELETE|/admin/v3/functions/:tenant/:namespace/:functionName|operation/deregisterFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().deleteFunction(tenant, namespace, functionName);
@@ -448,7 +448,7 @@ You can get information about a Pulsar function currently running in cluster mod
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`get`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=get) subcommand.
@@ -468,7 +468,7 @@ pulsar-admin functions get \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace/:functionName|operation/getFunctionInfo?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunction(tenant, namespace, functionName);
@@ -489,7 +489,7 @@ You can get the current status of a Pulsar function instance with `instance-id`
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`status`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=status) subcommand.
@@ -510,7 +510,7 @@ pulsar-admin functions status \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace/:functionName/:instanceId/status|operation/getFunctionInstanceStatus?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunctionStatus(tenant, namespace, functionName, Integer.parseInt(instanceId));
@@ -528,7 +528,7 @@ You can get the current status of a Pulsar function instance using Admin CLI, RE
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`status`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=status) subcommand.
@@ -548,7 +548,7 @@ pulsar-admin functions status \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace/:functionName/status|operation/getFunctionStatus?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunctionStatus(tenant, namespace, functionName);
@@ -569,7 +569,7 @@ You can get the current stats of a Pulsar Function instance with `instance-id` u
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`stats`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=stats) subcommand.
@@ -590,7 +590,7 @@ pulsar-admin functions stats \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace/:functionName/:instanceId/stats|operation/getFunctionInstanceStats?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunctionStats(tenant, namespace, functionName, Integer.parseInt(instanceId));
@@ -608,7 +608,7 @@ You can get the current stats of a Pulsar function using Admin CLI, REST API or
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`stats`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=stats) subcommand.
@@ -628,7 +628,7 @@ pulsar-admin functions stats \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace/:functionName/stats|operation/getFunctionStats?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunctionStats(tenant, namespace, functionName);
@@ -646,7 +646,7 @@ You can trigger a specified Pulsar function with a supplied value using Admin CL
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`trigger`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=trigger) subcommand.
@@ -669,7 +669,7 @@ pulsar-admin functions trigger \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/trigger|operation/triggerFunction?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().triggerFunction(tenant, namespace, functionName, topic, triggerValue, triggerFile);
@@ -689,7 +689,7 @@ You can put the state associated with a Pulsar function using Admin CLI, REST AP
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`putstate`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=putstate) subcommand.
@@ -710,7 +710,7 @@ pulsar-admin functions putstate \
{@inject: endpoint|POST|/admin/v3/functions/:tenant/:namespace/:functionName/state/:key|operation/putFunctionState?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
TypeReference<FunctionState> typeRef = new TypeReference<FunctionState>() {};
@@ -730,7 +730,7 @@ You can fetch the current state associated with a Pulsar function using Admin CL
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
Use the [`querystate`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/functions?id=querystate) subcommand.
@@ -751,7 +751,7 @@ pulsar-admin functions querystate \
{@inject: endpoint|GET|/admin/v3/functions/:tenant/:namespace/:functionName/state/:key|operation/getFunctionState?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
admin.functions().getFunctionState(tenant, namespace, functionName, key);
diff --git a/docs/admin-api-schemas.md b/docs/admin-api-schemas.md
index 3250053f292..7bb9a166d18 100644
--- a/docs/admin-api-schemas.md
+++ b/docs/admin-api-schemas.md
@@ -31,7 +31,7 @@ To upload (register) a new schema for a topic, you can use one of the following
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -67,7 +67,7 @@ The post payload is in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
void createSchema(String topic, PostSchemaPayload schemaPayload)
@@ -119,7 +119,7 @@ To get the latest schema for a topic, you can use one of the following methods.
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -162,7 +162,7 @@ Here is an example of a response, which is returned in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
SchemaInfo createSchema(String topic)
@@ -187,7 +187,7 @@ To get a specific version of a schema, you can use one of the following methods.
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -215,7 +215,7 @@ Here is an example of a response, which is returned in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
SchemaInfo createSchema(String topic, long version)
@@ -267,7 +267,7 @@ To delete a schema for a topic, you can use one of the following methods.
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -291,7 +291,7 @@ Here is an example of a response returned in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
void deleteSchema(String topic)
@@ -318,7 +318,7 @@ To enable/enforce schema auto-update at the namespace level, you can use one of
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -342,7 +342,7 @@ The post payload is in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
Here is an example to enable schema auto-update for a tenant/namespace.
@@ -367,7 +367,7 @@ To disable schema auto-update at the **namespace** level, you can use one of the
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -391,7 +391,7 @@ The post payload is in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
Here is an example to enable schema auto-unpdate of a tenant/namespace.
@@ -414,7 +414,7 @@ To enable schema validation enforcement at the **namespace** level, you can use
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -438,7 +438,7 @@ The post payload is in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
Here is an example to enable schema validation enforcement for a tenant/namespace.
@@ -457,7 +457,7 @@ To disable schema validation enforcement at the **namespace** level, you can use
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -481,7 +481,7 @@ The post payload is in JSON format.
```
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
Here is an example to enable schema validation enforcement for a tenant/namespace.
@@ -508,7 +508,7 @@ To set a schema compatibility check strategy at the topic level, you can use one
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -524,7 +524,7 @@ pulsar-admin topicPolicies set-schema-compatibility-strategy <strategy> <topicNa
Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v2/topics/:tenant/:namespace/:topic|operation/schemaCompatibilityStrategy?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
void setSchemaCompatibilityStrategy(String topic, SchemaCompatibilityStrategy strategy)
@@ -549,7 +549,7 @@ To set schema compatibility check strategy at the namespace level, you can use o
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -565,7 +565,7 @@ pulsar-admin namespaces set-schema-compatibility-strategy options
Send a `PUT` request to this endpoint: {@inject: endpoint|PUT|/admin/v2/namespaces/:tenant/:namespace|operation/schemaCompatibilityStrategy?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
Use the [`setSchemaCompatibilityStrategy`](/api/admin/) method.
@@ -596,7 +596,7 @@ To get the topic-level schema compatibility check strategy, you can use one of t
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -612,7 +612,7 @@ pulsar-admin topicPolicies get-schema-compatibility-strategy <topicName>
Send a `GET` request to this endpoint: {@inject: endpoint|GET|/admin/v2/topics/:tenant/:namespace/:topic|operation/schemaCompatibilityStrategy?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
```java
SchemaCompatibilityStrategy getSchemaCompatibilityStrategy(String topic, boolean applied)
@@ -641,7 +641,7 @@ You can get schema compatibility check strategy at namespace level using one of
````mdx-code-block
<Tabs groupId="api-choice"
defaultValue="Admin CLI"
- values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java Admin API","value":"Java Admin API"}]}>
+ values={[{"label":"Admin CLI","value":"Admin CLI"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="Admin CLI">
@@ -657,7 +657,7 @@ pulsar-admin namespaces get-schema-compatibility-strategy options
Send a `GET` request to this endpoint: {@inject: endpoint|GET|/admin/v2/namespaces/:tenant/:namespace|operation/schemaCompatibilityStrategy?version=@pulsar:version_number@}
</TabItem>
-<TabItem value="Java Admin API">
+<TabItem value="Java">
Use the [`getSchemaCompatibilityStrategy`](/api/admin/) method.
diff --git a/docs/admin-get-started.md b/docs/admin-get-started.md
index 255b3e24dfa..dc8b3cde0cc 100644
--- a/docs/admin-get-started.md
+++ b/docs/admin-get-started.md
@@ -9,25 +9,44 @@ import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
````
-This guide walks you through the quickest way to get started with the following Pulsar admin APIs to manage topics:
+This guide walks you through the quickest way to get started with the following methods to manage topics.
-- Java admin API
+````mdx-code-block
+<Tabs groupId="api-choice"
+ defaultValue="pulsar-admin"
+ values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+<TabItem value="pulsar-admin">
+
+[pulsar-admin CLI](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/): it’s a command-line tool and is available in the bin folder of your Pulsar installation.
+
+</TabItem>
+<TabItem value="REST API">
+
+[REST API](pathname:///admin-rest-api/?version=@pulsar:version_number@): HTTP calls, which are made against the admin APIs provided by brokers. In addition, both the Java admin API and pulsar-admin CLI use the REST API.
+
+</TabItem>
+<TabItem value="Java">
+
+[Java admin API](/api/admin/): it’s a programmable interface written in Java.
+
+</TabItem>
-- Go admin API (coming soon)
+</Tabs>
+````
-- REST API
+Check the detailed steps below.
````mdx-code-block
<Tabs groupId="api-choice"
- defaultValue="Java admin API"
- values={[{"label":"Java admin API","value":"Java admin API"},{"label":"REST API","value":"REST API"}]}>
-<TabItem value="Java admin API">
+ defaultValue="pulsar-admin"
+ values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
+<TabItem value="pulsar-admin">
-This tutorial guides you through every step of using Java admin API to manage topics. It includes the following steps:
+This tutorial guides you through every step of using pulsar-admin CLI to manage topics. It includes the following steps:
-1. Initiate a Pulsar Java client.
+1. Set the service URL.
-2. Create a partitioned topic
+2. Create a partitioned topic.
3. Update the number of a partition.
@@ -35,76 +54,200 @@ This tutorial guides you through every step of using Java admin API to manage to
5. Check the stats of the topic.
-6. Delete the topic.
+6. Delete the topic.
**Prerequisites**
-- Prepare a Java project. You can download one from [Apache Pulsar examples and demos](https://github.com/streamnative/examples).
+- Install and start Pulsar standalone. This tutorial runs Pulsar 2.11 as an example.
**Steps**
-1. Initiate a Pulsar Java client in your Java project.
+1. Set the service URLs to point to the broker service in [client.conf](https://github.com/apache/pulsar/blob/master/conf/client.conf).
+
+ ```bash
+ webServiceUrl=http://localhost:8080/
+ brokerServiceUrl=pulsar://localhost:6650/
+ ```
+
+2. Create a persistent topic named _test-topic-1_ with 6 partitions.
**Input**
- ```java
- String url = "http://localhost:8080";
- PulsarAdmin admin = PulsarAdmin.builder()
- .serviceHttpUrl(url)
- .build();
+ ```bash
+ bin/pulsar-admin topics create-partitioned-topic \
+ persistent://public/default/test-topic-1 \
+ --partitions 6
```
-2. Create a partitioned topic _test-topic-1_ with 4 partitions.
+ **Output**
+
+ There is no output. You can check the status of the topic in Step 5.
+
+3. Update the number of the partition to 8.
**Input**
- ```java
- admin.topics().createPartitionedTopic("persistent://public/default/test-topic-1", 4);
+ ```bash
+ bin/pulsar-admin topics update-partitioned-topic \
+ persistent://public/default/test-topic-1 \
+ --partitions 8
```
-3. Update the number of the partition to 5.
+ **Output**
+
+ There is no output. You can check the number of partitions in Step 5.
+
+4. Produce some messages to the partitioned topic _test-topic-1_.
**Input**
- ```java
- admin.topics().updatePartitionedTopic("test-topic-1", 5);
+ ```bash
+ bin/pulsar-perf produce -u pulsar://localhost:6650 -r 1000 -i 1000 persistent://public/default/test-topic-1
```
-4. Produce some messages to the topic _test-topic-1_.
+ **Output**
+
+ ```bash
+ 2023-03-07T15:33:56,832+0800 [main] INFO org.apache.pulsar.testclient.PerformanceProducer - Starting Pulsar perf producer with config: {
+ "confFile" : "/Users/yu/apache-pulsar-2.11.0/conf/client.conf",
+ "serviceURL" : "pulsar://localhost:6650",
+ "authPluginClassName" : "",
+ "authParams" : "",
+ "tlsTrustCertsFilePath" : "",
+ "tlsAllowInsecureConnection" : false,
+ "tlsHostnameVerificationEnable" : false,
+ "maxConnections" : 1,
+ "statsIntervalSeconds" : 1000,
+ "ioThreads" : 1,
+ "enableBusyWait" : false,
+ "listenerName" : null,
+ "listenerThreads" : 1,
+ "maxLookupRequest" : 50000,
+ "topics" : [ "persistent://public/default/test-topic-1" ],
+ "numTestThreads" : 1,
+ "msgRate" : 1000,
+ "msgSize" : 1024,
+ "numTopics" : 1,
+ "numProducers" : 1,
+ "separator" : "-",
+ "sendTimeout" : 0,
+ "producerName" : null,
+ "adminURL" : "http://localhost:8080/",
+
+ ...
+
+ 2023-03-07T15:35:03,769+0800 [Thread-0] INFO org.apache.pulsar.testclient.PerformanceProducer - Aggregated latency stats --- Latency: mean: 8.931 ms - med: 3.775 - 95pct: 32.144 - 99pct: 98.432 - 99.9pct: 216.088 - 99.99pct: 304.807 - 99.999pct: 349.391 - Max: 351.235
+ ```
+
+5. Check the internal stats of the partitioned topic _test-topic-1_.
**Input**
- ```java
- PulsarClient client = PulsarClient.builder()
- .serviceUrl("pulsar://localhost:6650")
- .build();
+ ```bash
+ bin/pulsar-admin topics partitioned-stats-internal \
+ persistent://public/default/test-topic-1
+ ```
- Producer<String> producer = client.newProducer(Schema.STRING)
- .topic(topic)
- .blockIfQueueFull(true)
- .create();
+ **Output**
- for (int i = 0; i < 100; ++i) {
- producer.newMessage().value("test").send();
- }
- producer.close();
- client.close();
+ Below is a part of the output. For detailed explanations of topic stats, see Pulsar statistics.
+
+ ```bash
+ {
+ "metadata" : {
+ "partitions" : 8
+ },
+ "partitions" : {
+ "persistent://public/default/test-topic-1-partition-1" : {
+ "entriesAddedCounter" : 4213,
+ "numberOfEntries" : 4213,
+ "totalSize" : 8817693,
+ "currentLedgerEntries" : 4212,
+ "currentLedgerSize" : 8806289,
+ "lastLedgerCreatedTimestamp" : "2023-03-07T15:33:59.367+08:00",
+ "waitingCursorsCount" : 0,
+ "pendingAddEntriesCount" : 0,
+ "lastConfirmedEntry" : "65:4211",
+ "state" : "LedgerOpened",
+ "ledgers" : [ {
+ "ledgerId" : 49,
+ "entries" : 1,
+ "size" : 11404,
+ "offloaded" : false,
+ "underReplicated" : false
+ }, {
+ "ledgerId" : 65,
+ "entries" : 0,
+ "size" : 0,
+ "offloaded" : false,
+ "underReplicated" : false
+ } ],
+ "cursors" : {
+ "test-subscriptio-1" : {
+ "markDeletePosition" : "49:-1",
+ "readPosition" : "49:0",
+ "waitingReadOp" : false,
+ "pendingReadOps" : 0,
+ "messagesConsumedCounter" : 0,
+ "cursorLedger" : -1,
+ "cursorLedgerLastEntry" : -1,
+ "individuallyDeletedMessages" : "[]",
+ "lastLedgerSwitchTimestamp" : "2023-03-06T16:41:32.801+08:00",
+ "state" : "NoLedger",
+ "numberOfEntriesSinceFirstNotAckedMessage" : 1,
+ "totalNonContiguousDeletedMessagesRange" : 0,
+ "subscriptionHavePendingRead" : false,
+ "subscriptionHavePendingReplayRead" : false,
+ "properties" : { }
+ },
+ "test-subscription-1" : {
+ "markDeletePosition" : "49:-1",
+ "readPosition" : "49:0",
+ "waitingReadOp" : false,
+ "pendingReadOps" : 0,
+ "messagesConsumedCounter" : 0,
+ "cursorLedger" : -1,
+ "cursorLedgerLastEntry" : -1,
+ "individuallyDeletedMessages" : "[]",
+ "lastLedgerSwitchTimestamp" : "2023-03-06T16:41:32.801+08:00",
+ "state" : "NoLedger",
+ "numberOfEntriesSinceFirstNotAckedMessage" : 1,
+ "totalNonContiguousDeletedMessagesRange" : 0,
+ "subscriptionHavePendingRead" : false,
+ "subscriptionHavePendingReplayRead" : false,
+ "properties" : { }
+ }
+ },
+ "schemaLedgers" : [ ],
+ "compactedLedger" : {
+ "ledgerId" : -1,
+ "entries" : -1,
+ "size" : -1,
+ "offloaded" : false,
+ "underReplicated" : false
+ }
+ },
+ ...
```
-5. Check the stats of the topic _test-topic-1_.
+6. Delete the topic _test-topic-1_.
**Input**
+ ```bash
+ bin/pulsar-admin topics delete-partitioned-topic persistent://public/default/test-topic-1
```
- admin.topics().getPartitionedStats("persistent://public/default/test-topic-1", false)
- ````
-5. Delete the topic _test-topic-1_.
+ **Output**
+
+ There is no output. You can verify whether the _test-topic-1_ exists or not using the following command.
**Input**
- ```java
- admin.topics().deletePartitionedTopic("test-topic-1");
+ List topics in `public/default` namespace.
+
+ ```bash
+ bin/pulsar-admin topics list public/default
```
</TabItem>
@@ -124,7 +267,7 @@ This tutorial guides you through every step of using REST API to manage topics.
**Prerequisites**
-- [Install and start Pulsar standalone](getting-started-standalone.md). This tutorial runs Pulsar 2.11 as an example.
+- Install and start Pulsar standalone. This tutorial runs Pulsar 2.11 as an example.
**Steps**
@@ -232,7 +375,7 @@ This tutorial guides you through every step of using REST API to manage topics.
**Output**
- For detailed explanations of topic stats, see [Pulsar statistics](administration-stats.md).
+ For detailed explanations of topic stats, see Pulsar statistics.
```bash
{"metadata":{"partitions":5},"partitions":{"persistent://public/default/test-topic-2-partition-3":{"entriesAddedCounter":47087,"numberOfEntries":47087,"totalSize":80406959,"currentLedgerEntries":47087,"currentLedgerSize":80406959,"lastLedgerCreatedTimestamp":"2023-03-08T15:47:07.273+08:00","waitingCursorsCount":0,"pendingAddEntriesCount":0,"lastConfirmedEntry":"117:47086","state":"LedgerOpened","ledgers":[{"ledgerId":117,"entries":0,"size":0,"offloaded":false,"underReplicated":false} [...]
@@ -258,6 +401,108 @@ This tutorial guides you through every step of using REST API to manage topics.
curl -X GET http://localhost:8080/admin/v2/persistent/public/default
```
+</TabItem>
+<TabItem value="Java">
+
+This tutorial guides you through every step of using Java admin API to manage topics. It includes the following steps:
+
+1. Initiate a Pulsar Java client.
+
+2. Create a partitioned topic
+
+3. Update the number of a partition.
+
+4. Produce messages to the topic.
+
+5. Check the stats of the topic.
+
+6. Delete the topic.
+
+**Prerequisites**
+
+- Prepare a Java project and add the following dependency to your POM file.
+
+ ```java
+ <dependency>
+ <groupId>org.apache.pulsar</groupId>
+ <artifactId>pulsar-client-admin</artifactId>
+ <version>2.11.0</version>
+ </dependency>
+ ```
+
+**Steps**
+
+1. Initiate a Pulsar Java client in your Java project.
+
+ **Input**
+
+ ```java
+ String url = "http://localhost:8080";
+ PulsarAdmin admin = PulsarAdmin.builder()
+ .serviceHttpUrl(url)
+ .build();
+ ```
+
+2. Create a partitioned topic _test-topic-1_ with 4 partitions.
+
+ **Input**
+
+ ```java
+ admin.topics().createPartitionedTopic("persistent://public/default/test-topic-1", 4);
+ ```
+
+3. Update the number of the partition to 5.
+
+ **Input**
+
+ ```java
+ admin.topics().updatePartitionedTopic("test-topic-1", 5);
+ ```
+
+4. Produce some messages to the topic _test-topic-1_.
+
+ **Input**
+
+ ```java
+ PulsarClient client = PulsarClient.builder()
+ .serviceUrl("pulsar://localhost:6650")
+ .build();
+
+ Producer<String> producer = client.newProducer(Schema.STRING)
+ .topic("test-topic-1")
+ .blockIfQueueFull(true)
+ .create();
+
+ for (int i = 0; i < 100; ++i) {
+ producer.newMessage().value("test").send();
+ }
+ producer.close();
+ client.close();
+ ```
+
+5. Check the stats of the topic _test-topic-1_.
+
+ **Input**
+
+ ```java
+ PartitionedTopicStats stats = admin.topics().getPartitionedStats("persistent://public/default/test-topic-1",false);
+ System.out.println(stats.getMsgInCounter());
+ ```
+
+ **Output**
+
+ ```java
+ 100
+ ```
+
+6. Delete the topic _test-topic-1_.
+
+ **Input**
+
+ ```java
+ admin.topics().deletePartitionedTopic("test-topic-1");
+ ```
+
</TabItem>
</Tabs>
@@ -272,8 +517,12 @@ This tutorial guides you through every step of using REST API to manage topics.
- To perform administrative operations, see [Pulsar admin API - Tools](admin-api-tools.md).
-- To check the detailed usage, see the API references below.
+- To check the detailed usage, see the references below.
+
+ - [pulsar-admin CLI](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/)
+
+ - Pulsar admin APIs
- - [Java admin API](/api/admin/)
+ - [REST API](reference-rest-api-overview.md)
- - [REST API](reference-rest-api-overview.md)
+ - [Java admin API](/api/admin/)
\ No newline at end of file
diff --git a/docs/how-to-landing.md b/docs/how-to-landing.md
index c28013c6a93..39690c6deee 100644
--- a/docs/how-to-landing.md
+++ b/docs/how-to-landing.md
@@ -10,5 +10,4 @@ Learning new software can be an overwhelming task, but relax – most aspects of
- [How to create a tenant](tutorials-tenant.md)
- [How to create a namespace](tutorials-namespace.md)
- [How to create a topic](tutorials-topic.md)
-- [How to produce and consume messages](tutorials-produce-consume.md)
-- [Get started with pulsar-admin CLI tool](get-started-pulsar-admin.md)
\ No newline at end of file
+- [How to produce and consume messages](tutorials-produce-consume.md)
\ No newline at end of file
diff --git a/sidebars.json b/sidebars.json
index f10d5f7ae0c..4f539bdd3ae 100644
--- a/sidebars.json
+++ b/sidebars.json
@@ -474,8 +474,7 @@
"cookbooks-non-persistent",
"cookbooks-retention-expiry",
"cookbooks-message-queue",
- "cookbooks-bookkeepermetadata",
- "get-started-pulsar-admin"
+ "cookbooks-bookkeepermetadata"
]
},
{