This is an automated email from the ASF dual-hosted git repository.
technoboy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 9b3876df70f [fix][admin] Clearly define REST API on Open API for
Namesaces@v2 (#22775)
9b3876df70f is described below
commit 9b3876df70f3b1d8bc01a34308d718c456f1781b
Author: Baodi Shi <[email protected]>
AuthorDate: Mon May 27 21:37:24 2024 +0800
[fix][admin] Clearly define REST API on Open API for Namesaces@v2 (#22775)
---
.../pulsar/broker/admin/impl/NamespacesBase.java | 2 +-
.../apache/pulsar/broker/admin/v2/Namespaces.java | 453 +++++++++++++++------
2 files changed, 329 insertions(+), 126 deletions(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
index ca67a244607..afcf4e646fa 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java
@@ -2711,7 +2711,7 @@ public abstract class NamespacesBase extends
AdminResource {
}));
}
- protected CompletableFuture<Object>
internalGetDispatcherPauseOnAckStatePersistentAsync() {
+ protected CompletableFuture<Boolean>
internalGetDispatcherPauseOnAckStatePersistentAsync() {
return validateNamespacePolicyOperationAsync(namespaceName,
PolicyName.DISPATCHER_PAUSE_ON_ACK_STATE_PERSISTENT,
PolicyOperation.READ)
.thenCompose(__ ->
namespaceResources().getPoliciesAsync(namespaceName))
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
index 0e270ed34f7..3a7c614a7c6 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/v2/Namespaces.java
@@ -23,6 +23,8 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
+import io.swagger.annotations.Example;
+import io.swagger.annotations.ExampleProperty;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;
import java.util.HashSet;
@@ -58,9 +60,11 @@ import org.apache.pulsar.common.policies.data.BacklogQuota;
import org.apache.pulsar.common.policies.data.BacklogQuota.BacklogQuotaType;
import org.apache.pulsar.common.policies.data.BookieAffinityGroupData;
import org.apache.pulsar.common.policies.data.DelayedDeliveryPolicies;
+import org.apache.pulsar.common.policies.data.DispatchRate;
import org.apache.pulsar.common.policies.data.EntryFilters;
import org.apache.pulsar.common.policies.data.InactiveTopicPolicies;
import org.apache.pulsar.common.policies.data.NamespaceOperation;
+import org.apache.pulsar.common.policies.data.OffloadPolicies;
import org.apache.pulsar.common.policies.data.OffloadPoliciesImpl;
import org.apache.pulsar.common.policies.data.PersistencePolicies;
import org.apache.pulsar.common.policies.data.Policies;
@@ -72,6 +76,12 @@ import
org.apache.pulsar.common.policies.data.SchemaAutoUpdateCompatibilityStrat
import org.apache.pulsar.common.policies.data.SchemaCompatibilityStrategy;
import org.apache.pulsar.common.policies.data.SubscribeRate;
import org.apache.pulsar.common.policies.data.SubscriptionAuthMode;
+import org.apache.pulsar.common.policies.data.TopicHashPositions;
+import
org.apache.pulsar.common.policies.data.impl.AutoSubscriptionCreationOverrideImpl;
+import
org.apache.pulsar.common.policies.data.impl.AutoTopicCreationOverrideImpl;
+import org.apache.pulsar.common.policies.data.impl.BacklogQuotaImpl;
+import org.apache.pulsar.common.policies.data.impl.BookieAffinityGroupDataImpl;
+import org.apache.pulsar.common.policies.data.impl.BundlesDataImpl;
import org.apache.pulsar.common.policies.data.impl.DispatchRateImpl;
import org.apache.pulsar.common.util.FutureUtil;
import org.apache.pulsar.metadata.api.MetadataStoreException;
@@ -151,7 +161,9 @@ public class Namespaces extends NamespacesBase {
@PUT
@Path("/{tenant}/{namespace}")
@ApiOperation(value = "Creates a new namespace with the specified
policies")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster doesn't
exist"),
@ApiResponse(code = 409, message = "Namespace already exists"),
@ApiResponse(code = 412, message = "Namespace name is not valid")
})
@@ -179,6 +191,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}")
@ApiOperation(value = "Delete a namespace and all the topics under it.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@@ -207,6 +220,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/{bundle}")
@ApiOperation(value = "Delete a namespace bundle and all the topics under
it.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@@ -230,7 +244,10 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/permissions")
- @ApiOperation(value = "Retrieve the permissions for a namespace.")
+ @ApiOperation(value = "Retrieve the permissions for a namespace.",
+ notes = "Returns a nested map structure which Swagger does not
fully support for display. "
+ + "Structure: Map<String, Set<AuthAction>>. Please refer
to this structure for details.",
+ response = AuthAction.class, responseContainer = "Map")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Namespace is not empty") })
@@ -250,7 +267,10 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/permissions/subscription")
- @ApiOperation(value = "Retrieve the permissions for a subscription.")
+ @ApiOperation(value = "Retrieve the permissions for a subscription.",
+ notes = "Returns a nested map structure which Swagger does not
fully support for display. "
+ + "Structure: Map<String, Set<String>>. Please refer to this
structure for details.",
+ response = String.class, responseContainer = "Map")
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Namespace is not empty")})
@@ -272,7 +292,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/permissions/{role}")
@ApiOperation(value = "Grant a new permission to a role on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 501, message = "Authorization is not
enabled")})
@@ -296,7 +318,9 @@ public class Namespaces extends NamespacesBase {
@Path("/{property}/{namespace}/permissions/subscription/{subscription}")
@ApiOperation(hidden = true, value = "Grant a new permission to roles for
a subscription."
+ "[Tenant admin is allowed to perform this operation]")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Property or cluster or
namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 501, message = "Authorization is not enabled")
})
@@ -320,7 +344,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/permissions/{role}")
@ApiOperation(value = "Revoke all permissions to a role on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void revokePermissionsOnNamespace(@Suspended AsyncResponse
asyncResponse,
@PathParam("tenant") String
tenant,
@@ -339,7 +365,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{property}/{namespace}/permissions/{subscription}/{role}")
@ApiOperation(hidden = true, value = "Revoke subscription admin-api access
permission for a role.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Property or cluster or
namespace doesn't exist") })
public void revokePermissionOnSubscription(@Suspended AsyncResponse
asyncResponse,
@PathParam("property") String
property,
@@ -359,7 +387,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/replication")
@ApiOperation(value = "Get the replication clusters for a namespace.",
- response = String.class, responseContainer = "List")
+ response = String.class, responseContainer = "Set")
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Namespace is not global")})
@@ -380,7 +408,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/replication")
@ApiOperation(value = "Set the replication clusters for a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Peer-cluster can't be part of
replication-cluster"),
@ApiResponse(code = 412, message = "Namespace is not global or
invalid cluster ids") })
@@ -421,7 +451,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/messageTTL")
@ApiOperation(value = "Set message TTL in seconds for namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid TTL") })
public void setNamespaceMessageTTL(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@@ -441,7 +473,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/messageTTL")
@ApiOperation(value = "Remove message TTL in seconds for namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid TTL")})
public void removeNamespaceMessageTTL(@Suspended AsyncResponse
asyncResponse,
@@ -459,7 +493,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/subscriptionExpirationTime")
- @ApiOperation(value = "Get the subscription expiration time for the
namespace")
+ @ApiOperation(value = "Get the subscription expiration time for the
namespace", response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void getSubscriptionExpirationTime(@Suspended AsyncResponse
asyncResponse,
@@ -481,7 +515,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/subscriptionExpirationTime")
@ApiOperation(value = "Set subscription expiration time in minutes for
namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid expiration time")})
public void setSubscriptionExpirationTime(@Suspended AsyncResponse
asyncResponse,
@@ -504,7 +540,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/subscriptionExpirationTime")
@ApiOperation(value = "Remove subscription expiration time for namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist")})
public void removeSubscriptionExpirationTime(@Suspended AsyncResponse
asyncResponse,
@PathParam("tenant") String
tenant,
@@ -522,7 +560,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/deduplication")
- @ApiOperation(value = "Get broker side deduplication for all topics in a
namespace")
+ @ApiOperation(value = "Get broker side deduplication for all topics in a
namespace", response = Boolean.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void getDeduplication(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@@ -540,7 +578,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/deduplication")
@ApiOperation(value = "Enable or disable broker side deduplication for all
topics in a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void modifyDeduplication(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace,
@@ -560,7 +600,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/deduplication")
@ApiOperation(value = "Remove broker side deduplication for all topics in
a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void removeDeduplication(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
@@ -577,7 +619,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/autoTopicCreation")
- @ApiOperation(value = "Get autoTopicCreation info in a namespace")
+ @ApiOperation(value = "Get autoTopicCreation info in a namespace",
response = AutoTopicCreationOverrideImpl.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist")})
public void getAutoTopicCreation(@Suspended AsyncResponse asyncResponse,
@@ -596,7 +638,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/autoTopicCreation")
@ApiOperation(value = "Override broker's allowAutoTopicCreation setting
for a namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 406, message = "The number of partitions
should be less than or"
+ " equal to maxNumPartitionsPerPartitionedTopic"),
@@ -632,7 +676,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/autoTopicCreation")
@ApiOperation(value = "Remove override of broker's allowAutoTopicCreation
in a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void removeAutoTopicCreation(@Suspended final AsyncResponse
asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
@@ -660,7 +706,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/autoSubscriptionCreation")
@ApiOperation(value = "Override broker's allowAutoSubscriptionCreation
setting for a namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 400, message = "Invalid
autoSubscriptionCreation override")})
public void setAutoSubscriptionCreation(
@@ -690,7 +738,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/autoSubscriptionCreation")
- @ApiOperation(value = "Get autoSubscriptionCreation info in a namespace")
+ @ApiOperation(value = "Get autoSubscriptionCreation info in a namespace",
+ response = AutoSubscriptionCreationOverrideImpl.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist")})
public void getAutoSubscriptionCreation(@Suspended final AsyncResponse
asyncResponse,
@@ -709,7 +758,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/autoSubscriptionCreation")
@ApiOperation(value = "Remove override of broker's
allowAutoSubscriptionCreation in a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void removeAutoSubscriptionCreation(@Suspended final AsyncResponse
asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
@@ -735,7 +786,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/bundles")
- @ApiOperation(value = "Get the bundles split data.")
+ @ApiOperation(value = "Get the bundles split data.", response =
BundlesDataImpl.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Namespace is not setup to
split in bundles") })
@@ -767,6 +818,7 @@ public class Namespaces extends NamespacesBase {
+ " since it wouldresult in non-persistent message loss
and"
+ " unexpected connection closure to the clients.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"),
@@ -799,6 +851,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/{bundle}/unload")
@ApiOperation(value = "Unload a namespace bundle")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 403, message = "Don't have admin permission")
})
@@ -828,6 +881,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/{bundle}/split")
@ApiOperation(value = "Split a namespace bundle")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 403, message = "Don't have admin permission")
})
@@ -864,7 +918,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/{bundle}/topicHashPositions")
- @ApiOperation(value = "Get hash positions for topics")
+ @ApiOperation(value = "Get hash positions for topics", response =
TopicHashPositions.class)
@ApiResponses(value = {
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist")})
@@ -890,7 +944,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{property}/{namespace}/publishRate")
@ApiOperation(hidden = true, value = "Set publish-rate throttling for all
topics of the namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission") })
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")
})
public void setPublishRate(@Suspended AsyncResponse asyncResponse,
@PathParam("property") String property,
@PathParam("namespace") String namespace,
@ApiParam(value = "Publish rate for all topics of the specified
namespace") PublishRate publishRate) {
@@ -906,7 +962,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{property}/{namespace}/publishRate")
@ApiOperation(hidden = true, value = "Set publish-rate throttling for all
topics of the namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission") })
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")
})
public void removePublishRate(@Suspended AsyncResponse asyncResponse,
@PathParam("property") String property,
@PathParam("namespace") String namespace) {
validateNamespaceName(property, namespace);
@@ -924,7 +982,8 @@ public class Namespaces extends NamespacesBase {
@Path("/{property}/{namespace}/publishRate")
@ApiOperation(hidden = true,
value = "Get publish-rate configured for the namespace, null means
publish-rate not configured, "
- + "-1 means msg-publish-rate or byte-publish-rate not
configured in publish-rate yet")
+ + "-1 means msg-publish-rate or byte-publish-rate not
configured in publish-rate yet",
+ response = PublishRate.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist")})
public void getPublishRate(@Suspended AsyncResponse asyncResponse,
@@ -943,7 +1002,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/dispatchRate")
@ApiOperation(value = "Set dispatch-rate throttling for all topics of the
namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission") })
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")
})
public void setDispatchRate(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace,
@ApiParam(value = "Dispatch rate for all topics of the specified
namespace")
@@ -962,7 +1023,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/dispatchRate")
@ApiOperation(value = "Delete dispatch-rate throttling for all topics of
the namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission") })
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")
})
public void deleteDispatchRate(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
validateNamespaceName(tenant, namespace);
@@ -979,7 +1042,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/dispatchRate")
@ApiOperation(value = "Get dispatch-rate configured for the namespace,
null means dispatch-rate not configured, "
- + "-1 means msg-dispatch-rate or byte-dispatch-rate not configured
in dispatch-rate yet")
+ + "-1 means msg-dispatch-rate or byte-dispatch-rate not configured
in dispatch-rate yet",
+ response = DispatchRate.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getDispatchRate(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@@ -996,7 +1060,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/subscriptionDispatchRate")
@ApiOperation(value = "Set Subscription dispatch-rate throttling for all
topics of the namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission")})
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")})
public void setSubscriptionDispatchRate(@Suspended AsyncResponse
asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String
namespace,
@@ -1018,7 +1084,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/subscriptionDispatchRate")
@ApiOperation(value = "Get subscription dispatch-rate configured for the
namespace, null means subscription "
+ "dispatch-rate not configured, -1 means msg-dispatch-rate or
byte-dispatch-rate not configured "
- + "in dispatch-rate yet")
+ + "in dispatch-rate yet", response = DispatchRate.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist")})
public void getSubscriptionDispatchRate(@Suspended AsyncResponse
asyncResponse,
@@ -1038,7 +1104,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/subscriptionDispatchRate")
@ApiOperation(value = "Delete Subscription dispatch-rate throttling for
all topics of the namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission") })
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")
})
public void deleteSubscriptionDispatchRate(@Suspended AsyncResponse
asyncResponse,
@PathParam("tenant") String
tenant,
@PathParam("namespace") String
namespace) {
@@ -1056,7 +1124,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/subscribeRate")
@ApiOperation(value = "Delete subscribe-rate throttling for all topics of
the namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission")})
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")})
public void deleteSubscribeRate(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
validateNamespaceName(tenant, namespace);
@@ -1073,7 +1143,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/subscribeRate")
@ApiOperation(value = "Set subscribe-rate throttling for all topics of the
namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission")})
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")})
public void setSubscribeRate(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace,
@ApiParam(value = "Subscribe rate for all
topics of the specified namespace")
@@ -1091,7 +1163,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/subscribeRate")
- @ApiOperation(value = "Get subscribe-rate configured for the namespace")
+ @ApiOperation(value = "Get subscribe-rate configured for the namespace",
response = SubscribeRate.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist")})
public void getSubscribeRate(@Suspended AsyncResponse asyncResponse,
@PathParam("tenant") String tenant,
@@ -1109,7 +1181,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/replicatorDispatchRate")
@ApiOperation(value = "Remove replicator dispatch-rate throttling for all
topics of the namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission")})
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")})
public void removeReplicatorDispatchRate(@Suspended AsyncResponse
asyncResponse,
@PathParam("tenant") String
tenant,
@PathParam("namespace") String
namespace) {
@@ -1120,7 +1194,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/replicatorDispatchRate")
@ApiOperation(value = "Set replicator dispatch-rate throttling for all
topics of the namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission")})
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")})
public void setReplicatorDispatchRate(@Suspended AsyncResponse
asyncResponse,
@PathParam("tenant") String tenant,
@PathParam("namespace") String
namespace,
@@ -1134,7 +1210,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/replicatorDispatchRate")
@ApiOperation(value = "Get replicator dispatch-rate configured for the
namespace, null means replicator "
+ "dispatch-rate not configured, -1 means msg-dispatch-rate or
byte-dispatch-rate not configured "
- + "in dispatch-rate yet")
+ + "in dispatch-rate yet", response = DispatchRateImpl.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getReplicatorDispatchRate(@Suspended final AsyncResponse
asyncResponse,
@@ -1146,7 +1222,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/backlogQuotaMap")
- @ApiOperation(value = "Get backlog quota map on a namespace.")
+ @ApiOperation(value = "Get backlog quota map on a namespace.",
+ response = BacklogQuotaImpl.class, responseContainer = "Map")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getBacklogQuotaMap(
@@ -1160,7 +1237,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/backlogQuota")
@ApiOperation(value = " Set a backlog quota for all the topics on a
namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412,
@@ -1178,7 +1257,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/backlogQuota")
@ApiOperation(value = "Remove a backlog quota policy from a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
public void removeBacklogQuota(
@@ -1191,7 +1272,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/retention")
- @ApiOperation(value = "Get retention config on a namespace.")
+ @ApiOperation(value = "Get retention config on a namespace.", response =
RetentionPolicies.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getRetention(@Suspended final AsyncResponse asyncResponse,
@@ -1212,7 +1293,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/retention")
@ApiOperation(value = " Set retention configuration on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "Retention Quota must exceed
backlog quota") })
@@ -1225,7 +1308,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/retention")
@ApiOperation(value = " Remove retention configuration on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "Retention Quota must exceed
backlog quota") })
@@ -1238,7 +1323,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/persistence")
@ApiOperation(value = "Set the persistence configuration for all the
topics on a namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 400, message = "Invalid persistence
policies")})
@@ -1260,7 +1347,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/persistence")
@ApiOperation(value = "Delete the persistence configuration for all topics
on a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission") })
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission")
})
public void deletePersistence(@Suspended final AsyncResponse
asyncResponse, @PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
validateNamespaceName(tenant, namespace);
@@ -1278,6 +1367,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/persistence/bookieAffinity")
@ApiOperation(value = "Set the bookie-affinity-group to
namespace-persistent policy.")
@ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@@ -1291,7 +1381,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{property}/{namespace}/persistence/bookieAffinity")
- @ApiOperation(value = "Get the bookie-affinity-group from namespace-local
policy.")
+ @ApiOperation(value = "Get the bookie-affinity-group from namespace-local
policy.",
+ response = BookieAffinityGroupDataImpl.class)
@ApiResponses(value = {
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@@ -1306,7 +1397,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{property}/{namespace}/persistence/bookieAffinity")
@ApiOperation(value = "Delete the bookie-affinity-group from
namespace-local policy.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
public void deleteBookieAffinityGroup(@PathParam("property") String
property,
@@ -1317,7 +1410,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/persistence")
- @ApiOperation(value = "Get the persistence configuration for a namespace.")
+ @ApiOperation(value = "Get the persistence configuration for a
namespace.", response = PersistencePolicies.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
@@ -1341,6 +1434,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/clearBacklog")
@ApiOperation(value = "Clear backlog for all topics on a namespace.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 403, message = "Don't have admin or operate
permission on the namespace"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void clearNamespaceBacklog(@Suspended final AsyncResponse
asyncResponse, @PathParam("tenant") String tenant,
@@ -1360,6 +1454,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/{bundle}/clearBacklog")
@ApiOperation(value = "Clear backlog for all topics on a namespace
bundle.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin or operate
permission on the namespace"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
@@ -1374,6 +1469,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/clearBacklog/{subscription}")
@ApiOperation(value = "Clear backlog for a given subscription on all
topics on a namespace.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 403, message = "Don't have admin or operate
permission on the namespace"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void clearNamespaceBacklogForSubscription(@Suspended final
AsyncResponse asyncResponse,
@@ -1394,6 +1490,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/{bundle}/clearBacklog/{subscription}")
@ApiOperation(value = "Clear backlog for a given subscription on all
topics on a namespace bundle.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 307, message = "Current broker doesn't serve
the namespace"),
@ApiResponse(code = 403, message = "Don't have admin or operate
permission on the namespace"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
@@ -1409,6 +1506,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/unsubscribe/{subscription}")
@ApiOperation(value = "Unsubscribes the given subscription on all topics
on a namespace.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 403, message = "Don't have admin or operate
permission on the namespacen"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void unsubscribeNamespace(@Suspended final AsyncResponse
asyncResponse, @PathParam("tenant") String tenant,
@@ -1429,6 +1527,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/{bundle}/unsubscribe/{subscription}")
@ApiOperation(value = "Unsubscribes the given subscription on all topics
on a namespace bundle.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 403, message = "Don't have admin or operate
permission on the namespace"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void unsubscribeNamespaceBundle(@PathParam("tenant") String tenant,
@@ -1442,7 +1541,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/subscriptionAuthMode")
@ApiOperation(value = " Set a subscription auth mode for all the topics on
a namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void setSubscriptionAuthMode(@PathParam("tenant") String tenant,
@@ -1455,7 +1556,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/subscriptionAuthMode")
- @ApiOperation(value = "Get subscription auth mode in a namespace")
+ @ApiOperation(value = "Get subscription auth mode in a namespace",
response = SubscriptionAuthMode.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist")})
public void getSubscriptionAuthMode(
@@ -1477,7 +1578,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/encryptionRequired")
@ApiOperation(value = "Message encryption is required or not for all
topics in a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"), })
public void modifyEncryptionRequired(
@@ -1491,7 +1594,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/encryptionRequired")
- @ApiOperation(value = "Get message encryption required status in a
namespace")
+ @ApiOperation(value = "Get message encryption required status in a
namespace", response = Boolean.class)
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist")})
public void getEncryptionRequired(@Suspended AsyncResponse asyncResponse,
@@ -1511,7 +1614,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/delayedDelivery")
- @ApiOperation(value = "Get delayed delivery messages config on a
namespace.")
+ @ApiOperation(value = "Get delayed delivery messages config on a
namespace.",
+ response = DelayedDeliveryPolicies.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"), })
@@ -1533,7 +1637,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/delayedDelivery")
@ApiOperation(value = "Set delayed delivery messages config on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"), })
public void setDelayedDeliveryPolicies(@PathParam("tenant") String tenant,
@PathParam("namespace") String
namespace,
@@ -1546,7 +1652,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/delayedDelivery")
@ApiOperation(value = "Delete delayed delivery messages config on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"), })
public void removeDelayedDeliveryPolicies(@PathParam("tenant") String
tenant,
@PathParam("namespace") String
namespace) {
@@ -1556,7 +1664,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/inactiveTopicPolicies")
- @ApiOperation(value = "Get inactive topic policies config on a namespace.")
+ @ApiOperation(value = "Get inactive topic policies config on a
namespace.", response = InactiveTopicPolicies.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"), })
@@ -1578,7 +1686,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/inactiveTopicPolicies")
@ApiOperation(value = "Remove inactive topic policies from a namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void removeInactiveTopicPolicies(@PathParam("tenant") String tenant,
@@ -1590,7 +1700,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/inactiveTopicPolicies")
@ApiOperation(value = "Set inactive topic policies config on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"), })
public void setInactiveTopicPolicies(@PathParam("tenant") String tenant,
@PathParam("namespace") String
namespace,
@@ -1602,7 +1714,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxProducersPerTopic")
- @ApiOperation(value = "Get maxProducersPerTopic config on a namespace.")
+ @ApiOperation(value = "Get maxProducersPerTopic config on a namespace.",
response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getMaxProducersPerTopic(
@@ -1624,7 +1736,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxProducersPerTopic")
@ApiOperation(value = " Set maxProducersPerTopic configuration on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "maxProducersPerTopic value is
not valid") })
@@ -1637,7 +1751,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxProducersPerTopic")
@ApiOperation(value = "Remove maxProducersPerTopic configuration on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
public void removeMaxProducersPerTopic(@PathParam("tenant") String tenant,
@@ -1648,7 +1764,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/deduplicationSnapshotInterval")
- @ApiOperation(value = "Get deduplicationSnapshotInterval config on a
namespace.")
+ @ApiOperation(value = "Get deduplicationSnapshotInterval config on a
namespace.", response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getDeduplicationSnapshotInterval(
@@ -1670,7 +1786,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/deduplicationSnapshotInterval")
@ApiOperation(value = "Set deduplicationSnapshotInterval config on a
namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist")})
public void setDeduplicationSnapshotInterval(@PathParam("tenant") String
tenant
, @PathParam("namespace") String namespace
@@ -1682,7 +1800,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxConsumersPerTopic")
- @ApiOperation(value = "Get maxConsumersPerTopic config on a namespace.")
+ @ApiOperation(value = "Get maxConsumersPerTopic config on a namespace.",
response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getMaxConsumersPerTopic(
@@ -1704,7 +1822,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxConsumersPerTopic")
@ApiOperation(value = " Set maxConsumersPerTopic configuration on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "maxConsumersPerTopic value is
not valid") })
@@ -1717,7 +1837,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxConsumersPerTopic")
@ApiOperation(value = "Remove maxConsumersPerTopic configuration on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
public void removeMaxConsumersPerTopic(@PathParam("tenant") String tenant,
@@ -1728,7 +1850,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxConsumersPerSubscription")
- @ApiOperation(value = "Get maxConsumersPerSubscription config on a
namespace.")
+ @ApiOperation(value = "Get maxConsumersPerSubscription config on a
namespace.", response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getMaxConsumersPerSubscription(
@@ -1750,7 +1872,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxConsumersPerSubscription")
@ApiOperation(value = " Set maxConsumersPerSubscription configuration on a
namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "maxConsumersPerSubscription
value is not valid")})
@@ -1766,7 +1890,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxConsumersPerSubscription")
@ApiOperation(value = " Set maxConsumersPerSubscription configuration on a
namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "maxConsumersPerSubscription
value is not valid")})
@@ -1778,7 +1904,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxUnackedMessagesPerConsumer")
- @ApiOperation(value = "Get maxUnackedMessagesPerConsumer config on a
namespace.")
+ @ApiOperation(value = "Get maxUnackedMessagesPerConsumer config on a
namespace.", response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getMaxUnackedMessagesPerConsumer(@Suspended final
AsyncResponse asyncResponse,
@@ -1799,7 +1925,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxUnackedMessagesPerConsumer")
@ApiOperation(value = " Set maxConsumersPerTopic configuration on a
namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "maxUnackedMessagesPerConsumer
value is not valid")})
@@ -1815,7 +1943,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxUnackedMessagesPerConsumer")
@ApiOperation(value = "Remove maxUnackedMessagesPerConsumer config on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void removeMaxUnackedmessagesPerConsumer(@PathParam("tenant")
String tenant,
@PathParam("namespace") String namespace) {
@@ -1825,7 +1955,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxUnackedMessagesPerSubscription")
- @ApiOperation(value = "Get maxUnackedMessagesPerSubscription config on a
namespace.")
+ @ApiOperation(value = "Get maxUnackedMessagesPerSubscription config on a
namespace.", response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getMaxUnackedmessagesPerSubscription(
@@ -1847,7 +1977,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxUnackedMessagesPerSubscription")
@ApiOperation(value = " Set maxUnackedMessagesPerSubscription
configuration on a namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message =
"maxUnackedMessagesPerSubscription value is not valid")})
@@ -1862,7 +1994,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxUnackedMessagesPerSubscription")
@ApiOperation(value = "Remove maxUnackedMessagesPerSubscription config on
a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void removeMaxUnackedmessagesPerSubscription(@PathParam("tenant")
String tenant,
@PathParam("namespace") String namespace) {
@@ -1872,7 +2006,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxSubscriptionsPerTopic")
- @ApiOperation(value = "Get maxSubscriptionsPerTopic config on a
namespace.")
+ @ApiOperation(value = "Get maxSubscriptionsPerTopic config on a
namespace.", response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getMaxSubscriptionsPerTopic(@Suspended final AsyncResponse
asyncResponse,
@@ -1893,7 +2027,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxSubscriptionsPerTopic")
@ApiOperation(value = " Set maxSubscriptionsPerTopic configuration on a
namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message =
"maxUnackedMessagesPerSubscription value is not valid")})
@@ -1908,7 +2044,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxSubscriptionsPerTopic")
@ApiOperation(value = "Remove maxSubscriptionsPerTopic configuration on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
public void removeMaxSubscriptionsPerTopic(@PathParam("tenant") String
tenant,
@@ -1920,7 +2058,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/antiAffinity")
@ApiOperation(value = "Set anti-affinity group for a namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid antiAffinityGroup")})
public void setNamespaceAntiAffinityGroup(@PathParam("tenant") String
tenant,
@@ -1934,7 +2074,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/antiAffinity")
- @ApiOperation(value = "Get anti-affinity group of a namespace.")
+ @ApiOperation(value = "Get anti-affinity group of a namespace.", response
= String.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public String getNamespaceAntiAffinityGroup(@PathParam("tenant") String
tenant,
@@ -1946,7 +2086,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/antiAffinity")
@ApiOperation(value = "Remove anti-affinity group of a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
public void removeNamespaceAntiAffinityGroup(@PathParam("tenant") String
tenant,
@@ -1958,7 +2100,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("{cluster}/antiAffinity/{group}")
@ApiOperation(value = "Get all namespaces that are grouped by given
anti-affinity group in a given cluster."
- + " api can be only accessed by admin of any of the existing
tenant")
+ + " api can be only accessed by admin of any of the existing
tenant",
+ response = String.class, responseContainer = "List")
@ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 412, message = "Cluster not
exist/Anti-affinity group can't be empty.")})
public List<String> getAntiAffinityNamespaces(@PathParam("cluster") String
cluster,
@@ -1970,7 +2113,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/compactionThreshold")
@ApiOperation(value = "Maximum number of uncompacted bytes in topics
before compaction is triggered.",
notes = "The backlog size is compared to the threshold
periodically. "
- + "A threshold of 0 disabled automatic compaction")
+ + "A threshold of 0 disabled automatic compaction",
response = Long.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace
doesn't exist") })
public void getCompactionThreshold(
@@ -1994,7 +2137,9 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "Set maximum number of uncompacted bytes in a topic
before compaction is triggered.",
notes = "The backlog size is compared to the threshold
periodically. "
+ "A threshold of 0 disabled automatic compaction")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "compactionThreshold value is
not valid")})
@@ -2012,7 +2157,9 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "Delete maximum number of uncompacted bytes in a
topic before compaction is triggered.",
notes = "The backlog size is compared to the threshold
periodically. "
+ "A threshold of 0 disabled automatic compaction")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void deleteCompactionThreshold(@PathParam("tenant") String tenant,
@@ -2025,7 +2172,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/offloadThreshold")
@ApiOperation(value = "Maximum number of bytes stored on the pulsar
cluster for a topic,"
+ " before the broker will start offloading to
longterm storage",
- notes = "A negative value disables automatic offloading")
+ notes = "A negative value disables automatic offloading",
response = Long.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace
doesn't exist") })
public void getOffloadThreshold(
@@ -2056,7 +2203,9 @@ public class Namespaces extends NamespacesBase {
+ " before the broker will start offloading to longterm storage",
notes = "-1 will revert to using the cluster default."
+ " A negative value disables automatic offloading. ")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "offloadThreshold value is not
valid")})
@@ -2074,7 +2223,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/offloadThresholdInSeconds")
@ApiOperation(value = "Maximum number of bytes stored on the pulsar
cluster for a topic,"
+ " before the broker will start offloading to longterm storage",
- notes = "A negative value disables automatic offloading")
+ notes = "A negative value disables automatic offloading", response
= Long.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist") })
public void getOffloadThresholdInSeconds(
@@ -2104,7 +2253,9 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "Set maximum number of seconds stored on the pulsar
cluster for a topic,"
+ " before the broker will start offloading to longterm storage",
notes = "A negative value disables automatic offloading")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "offloadThresholdInSeconds
value is not valid") })
@@ -2128,7 +2279,7 @@ public class Namespaces extends NamespacesBase {
+ " from the Pulsar cluster's local storage (i.e.
BookKeeper)",
notes = "A negative value denotes that deletion has been
completely disabled."
+ " 'null' denotes that the topics in the namespace
will fall back to the"
- + " broker default for deletion lag.")
+ + " broker default for deletion lag.", response =
Long.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace
doesn't exist") })
public void getOffloadDeletionLag(
@@ -2158,7 +2309,9 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "Set number of milliseconds to wait before deleting
a ledger segment which has been offloaded"
+ " from the Pulsar cluster's local storage (i.e. BookKeeper)",
notes = "A negative value disables the deletion completely.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@ApiResponse(code = 412, message = "offloadDeletionLagMs value is
not valid")})
@@ -2177,6 +2330,7 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "Clear the namespace configured offload deletion
lag. The topics in the namespace"
+ " will fallback to using the default configured
deletion lag for the broker")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponse(code = 200, message = "Operation
successful"),
@ApiResponse(code = 404, message = "Namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent
modification") })
public void clearOffloadDeletionLag(@PathParam("tenant") String tenant,
@@ -2190,7 +2344,8 @@ public class Namespaces extends NamespacesBase {
@ApiOperation(value = "The strategy used to check the compatibility of new
schemas,"
+ " provided by producers, before automatically
updating the schema",
notes = "The value AutoUpdateDisabled prevents producers
from updating the schema. "
- + " If set to AutoUpdateDisabled, schemas must be
updated through the REST api")
+ + " If set to AutoUpdateDisabled, schemas must be
updated through the REST api",
+ response = SchemaAutoUpdateCompatibilityStrategy.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent
modification") })
@@ -2207,7 +2362,9 @@ public class Namespaces extends NamespacesBase {
+ " provided by producers, before automatically updating the
schema",
notes = "The value AutoUpdateDisabled prevents producers from
updating the schema. "
+ " If set to AutoUpdateDisabled, schemas must be updated
through the REST api")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void setSchemaAutoUpdateCompatibilityStrategy(
@@ -2221,7 +2378,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/schemaCompatibilityStrategy")
- @ApiOperation(value = "The strategy of the namespace schema compatibility
")
+ @ApiOperation(value = "The strategy of the namespace schema compatibility
",
+ response = SchemaCompatibilityStrategy.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
@@ -2245,7 +2403,9 @@ public class Namespaces extends NamespacesBase {
@PUT
@Path("/{tenant}/{namespace}/schemaCompatibilityStrategy")
@ApiOperation(value = "Update the strategy used to check the compatibility
of new schema")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void setSchemaCompatibilityStrategy(
@@ -2259,7 +2419,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/isAllowAutoUpdateSchema")
- @ApiOperation(value = "The flag of whether allow auto update schema")
+ @ApiOperation(value = "The flag of whether allow auto update schema",
response = Boolean.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
@@ -2289,7 +2449,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/isAllowAutoUpdateSchema")
@ApiOperation(value = "Update flag of whether allow auto update schema")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void setIsAllowAutoUpdateSchema(
@@ -2303,7 +2465,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/subscriptionTypesEnabled")
- @ApiOperation(value = "The set of whether allow subscription types")
+ @ApiOperation(value = "The set of whether allow subscription types",
+ response = SubscriptionType.class, responseContainer = "Set")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification") })
@@ -2331,7 +2494,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/subscriptionTypesEnabled")
@ApiOperation(value = "Update set of whether allow share sub type")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void setSubscriptionTypesEnabled(
@@ -2362,7 +2527,8 @@ public class Namespaces extends NamespacesBase {
notes = "If the flag is set to true, when a producer without
a schema attempts to produce to a topic"
+ " with schema in this namespace, the producer will
be failed to connect. PLEASE be"
+ " carefully on using this, since non-java clients
don't support schema.if you enable"
- + " this setting, it will cause non-java clients
failed to produce.")
+ + " this setting, it will cause non-java clients
failed to produce.",
+ response = Boolean.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenants or
Namespace doesn't exist") })
public void getSchemaValidtionEnforced(
@@ -2397,7 +2563,9 @@ public class Namespaces extends NamespacesBase {
+ " with schema in this namespace, the producer will be
failed to connect. PLEASE be"
+ " carefully on using this, since non-java clients don't
support schema.if you enable"
+ " this setting, it will cause non-java clients failed to
produce.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or Namespace doesn't
exist"),
@ApiResponse(code = 412, message = "schemaValidationEnforced value
is not valid")})
public void setSchemaValidationEnforced(@PathParam("tenant") String tenant,
@@ -2412,8 +2580,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/offloadPolicies")
- @ApiOperation(value = " Set offload configuration on a namespace.")
+ @ApiOperation(value = "Set offload configuration on a namespace.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@@ -2437,6 +2606,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/removeOffloadPolicies")
@ApiOperation(value = " Set offload configuration on a namespace.")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist"),
@ApiResponse(code = 409, message = "Concurrent modification"),
@@ -2456,7 +2626,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/offloadPolicies")
- @ApiOperation(value = "Get offload configuration on a namespace.")
+ @ApiOperation(value = "Get offload configuration on a namespace.",
response = OffloadPolicies.class)
@ApiResponses(value = {
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist")})
@@ -2478,7 +2648,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/maxTopicsPerNamespace")
- @ApiOperation(value = "Get maxTopicsPerNamespace config on a namespace.")
+ @ApiOperation(value = "Get maxTopicsPerNamespace config on a namespace.",
response = Integer.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace does not
exist") })
public void getMaxTopicsPerNamespace(@Suspended final AsyncResponse
asyncResponse,
@@ -2503,7 +2673,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/maxTopicsPerNamespace")
@ApiOperation(value = "Set maxTopicsPerNamespace config on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void setMaxTopicsPerNamespace(@PathParam("tenant") String tenant,
@PathParam("namespace") String
namespace,
@@ -2516,7 +2688,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/maxTopicsPerNamespace")
@ApiOperation(value = "Remove maxTopicsPerNamespace config on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void removeMaxTopicsPerNamespace(@PathParam("tenant") String tenant,
@PathParam("namespace") String
namespace) {
@@ -2527,7 +2701,9 @@ public class Namespaces extends NamespacesBase {
@PUT
@Path("/{tenant}/{namespace}/property/{key}/{value}")
@ApiOperation(value = "Put a key value pair property on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void setProperty(
@Suspended final AsyncResponse asyncResponse,
@@ -2541,7 +2717,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/property/{key}")
- @ApiOperation(value = "Get property value for a given key on a namespace.")
+ @ApiOperation(value = "Get property value for a given key on a
namespace.", response = String.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void getProperty(
@@ -2556,7 +2732,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/property/{key}")
@ApiOperation(value = "Remove property value for a given key on a
namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void removeProperty(
@Suspended final AsyncResponse asyncResponse,
@@ -2570,7 +2748,9 @@ public class Namespaces extends NamespacesBase {
@PUT
@Path("/{tenant}/{namespace}/properties")
@ApiOperation(value = "Put key value pairs property on a namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void setProperties(
@Suspended final AsyncResponse asyncResponse,
@@ -2584,7 +2764,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/properties")
- @ApiOperation(value = "Get key value pair properties for a given
namespace.")
+ @ApiOperation(value = "Get key value pair properties for a given
namespace.",
+ response = String.class, responseContainer = "Map")
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void getProperties(
@@ -2598,7 +2779,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/properties")
@ApiOperation(value = "Clear properties on a given namespace.")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or namespace doesn't
exist"), })
public void clearProperties(
@Suspended final AsyncResponse asyncResponse,
@@ -2610,7 +2793,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/resourcegroup")
- @ApiOperation(value = "Get the resource group attached to the namespace")
+ @ApiOperation(value = "Get the resource group attached to the namespace",
response = String.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void getNamespaceResourceGroup(
@@ -2632,7 +2815,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/resourcegroup/{resourcegroup}")
@ApiOperation(value = "Set resourcegroup for a namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid resourcegroup") })
public void setNamespaceResourceGroup(@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace,
@@ -2644,7 +2829,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/resourcegroup")
@ApiOperation(value = "Delete resourcegroup for a namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid resourcegroup")})
public void removeNamespaceResourceGroup(@PathParam("tenant") String
tenant,
@@ -2656,7 +2843,13 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/scanOffloadedLedgers")
@ApiOperation(value = "Trigger the scan of offloaded Ledgers on the
LedgerOffloader for the given namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Successful get of offloaded
ledger data", response = String.class,
+ examples = @Example(value = { @ExampleProperty(mediaType =
"application/json",
+ value =
"{\"objects\":[{\"key1\":\"value1\",\"key2\":\"value2\"}],"
+ + "\"total\":100,\"errors\":5,\"unknown\":3}")
+ })),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Namespace doesn't exist") })
public Response scanOffloadedLedgers(@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace) {
@@ -2705,7 +2898,7 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/entryFilters")
- @ApiOperation(value = "Get maxConsumersPerSubscription config on a
namespace.")
+ @ApiOperation(value = "Get maxConsumersPerSubscription config on a
namespace.", response = EntryFilters.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Namespace does not exist") })
public void getEntryFiltersPerTopic(
@@ -2728,6 +2921,7 @@ public class Namespaces extends NamespacesBase {
@Path("/{tenant}/{namespace}/entryFilters")
@ApiOperation(value = "Set entry filters for namespace")
@ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
@ApiResponse(code = 400, message = "Specified entry filters are
not valid"),
@ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist")
@@ -2749,7 +2943,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/entryFilters")
@ApiOperation(value = "Remove entry filters for namespace")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 412, message = "Invalid TTL")})
public void removeNamespaceEntryFilters(@Suspended AsyncResponse
asyncResponse,
@@ -2768,7 +2964,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/migration")
@ApiOperation(hidden = true, value = "Update migration for all topics in a
namespace")
- @ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 200, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Property or cluster or
namespace doesn't exist") })
public void enableMigration(@PathParam("tenant") String tenant,
@PathParam("namespace") String namespace,
@@ -2780,7 +2978,9 @@ public class Namespaces extends NamespacesBase {
@POST
@Path("/{tenant}/{namespace}/dispatcherPauseOnAckStatePersistent")
@ApiOperation(value = "Set dispatcher pause on ack state persistent
configuration for specified namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void setDispatcherPauseOnAckStatePersistent(@Suspended final
AsyncResponse asyncResponse,
@@ -2802,7 +3002,9 @@ public class Namespaces extends NamespacesBase {
@DELETE
@Path("/{tenant}/{namespace}/dispatcherPauseOnAckStatePersistent")
@ApiOperation(value = "Remove dispatcher pause on ack state persistent
configuration for specified namespace.")
- @ApiResponses(value = {@ApiResponse(code = 403, message = "Don't have
admin permission"),
+ @ApiResponses(value = {
+ @ApiResponse(code = 204, message = "Operation successful"),
+ @ApiResponse(code = 403, message = "Don't have admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist"),
@ApiResponse(code = 409, message = "Concurrent modification")})
public void removeDispatcherPauseOnAckStatePersistent(@Suspended final
AsyncResponse asyncResponse,
@@ -2823,7 +3025,8 @@ public class Namespaces extends NamespacesBase {
@GET
@Path("/{tenant}/{namespace}/dispatcherPauseOnAckStatePersistent")
- @ApiOperation(value = "Get dispatcher pause on ack state persistent config
on a namespace.")
+ @ApiOperation(value = "Get dispatcher pause on ack state persistent config
on a namespace.",
+ response = Boolean.class)
@ApiResponses(value = { @ApiResponse(code = 403, message = "Don't have
admin permission"),
@ApiResponse(code = 404, message = "Tenant or cluster or namespace
doesn't exist") })
public void getDispatcherPauseOnAckStatePersistent(@Suspended final
AsyncResponse asyncResponse,