blob: 25032b3f1b220a94023421bb679abb81996af196 [file] [log] [blame]
{
"swagger" : "2.0",
"info" : {
"description" : "This provides the REST API for admin operations",
"version" : "v2",
"title" : "Pulsar Admin REST API",
"license" : {
"name" : "Apache 2.0",
"url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"basePath" : "/admin/v2",
"tags" : [ {
"name" : "bookies"
}, {
"name" : "broker-stats"
}, {
"name" : "brokers"
}, {
"name" : "clusters"
}, {
"name" : "namespaces"
}, {
"name" : "non-persistent topic"
}, {
"name" : "persistent topic"
}, {
"name" : "resource-quotas"
}, {
"name" : "schemas"
}, {
"name" : "tenants"
} ],
"schemes" : [ "http", "https" ],
"paths" : {
"/bookies/racks-info" : {
"get" : {
"tags" : [ "bookies" ],
"summary" : "Gets the rack placement information for all the bookies in the cluster",
"description" : "",
"operationId" : "getBookiesRackInfo",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/BookieInfo"
}
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/bookies/racks-info/{bookie}" : {
"get" : {
"tags" : [ "bookies" ],
"summary" : "Gets the rack placement information for a specific bookie in the cluster",
"description" : "",
"operationId" : "getBookieRackInfo",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "bookie",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/BookieInfo"
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
},
"post" : {
"tags" : [ "bookies" ],
"summary" : "Updates the rack placement information for a specific bookie in the cluster (note. bookie address format:`address:port`)",
"description" : "",
"operationId" : "updateBookieRackInfo",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "bookie",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "group",
"in" : "query",
"required" : false,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
},
"delete" : {
"tags" : [ "bookies" ],
"summary" : "Removed the rack placement information for a specific bookie in the cluster",
"description" : "",
"operationId" : "deleteBookieRackInfo",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "bookie",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/broker-stats/allocator-stats/{allocator}" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Get the stats for the Netty allocator. Available allocators are 'default' and 'ml-cache'",
"description" : "",
"operationId" : "getAllocatorStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "allocator",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/AllocatorStats"
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/broker-stats/bookieops" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Get pending bookie client op stats by namesapce",
"description" : "",
"operationId" : "getPendingBookieOpsStats",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/PendingBookieOpsStats"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/broker-stats/broker-resource-availability/{tenant}/{namespace}" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Broker availability report",
"description" : "This API gives the current broker availability in percent, each resource percentage usage is calculated and thensum of all of the resource usage percent is called broker-resource-availability<br/><br/>THIS API IS ONLY FOR USE BY TESTING FOR CONFIRMING NAMESPACE ALLOCATION ALGORITHM",
"operationId" : "getBrokerResourceAvailability",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/ResourceUnit"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Load-manager doesn't support operation"
}
}
}
},
"/broker-stats/load-report" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Get Load for this broker",
"description" : "consists of topics stats & systemResourceUsage",
"operationId" : "getLoadReport",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/LoadReport"
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/broker-stats/mbeans" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Get all the mbean details of this broker JVM",
"description" : "",
"operationId" : "getMBeans",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/Metrics"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/broker-stats/metrics" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Gets the metrics for Monitoring",
"description" : "Requested should be executed by Monitoring agent on each broker to fetch the metrics",
"operationId" : "getMetrics",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/Metrics"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/broker-stats/topics" : {
"get" : {
"tags" : [ "broker-stats" ],
"summary" : "Get all the topic stats by namespace",
"description" : "",
"operationId" : "getTopics2",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/OutputStream"
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/brokers/configuration" : {
"get" : {
"tags" : [ "brokers" ],
"summary" : "Get all updatable dynamic configurations's name",
"description" : "",
"operationId" : "getDynamicConfigurationName",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "object"
}
}
}
}
}
},
"/brokers/configuration/values" : {
"get" : {
"tags" : [ "brokers" ],
"summary" : "Get value of all dynamic configurations' value overridden on local config",
"description" : "",
"operationId" : "getAllDynamicConfigurations",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"type" : "object"
}
}
},
"404" : {
"description" : "Configuration not found"
}
}
}
},
"/brokers/configuration/{configName}/{configValue}" : {
"post" : {
"tags" : [ "brokers" ],
"summary" : "Update dynamic serviceconfiguration into zk only. This operation requires Pulsar super-user privileges.",
"description" : "",
"operationId" : "updateDynamicConfiguration",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "configName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "configValue",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"204" : {
"description" : "Service configuration updated successfully"
},
"403" : {
"description" : "You don't have admin permission to update service-configuration"
},
"404" : {
"description" : "Configuration not found"
},
"412" : {
"description" : "Configuration can't be updated dynamically"
}
}
}
},
"/brokers/health" : {
"get" : {
"tags" : [ "brokers" ],
"summary" : "Run a healthcheck against the broker",
"description" : "",
"operationId" : "healthcheck",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "Everything is OK"
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/brokers/internal-configuration" : {
"get" : {
"tags" : [ "brokers" ],
"summary" : "Get the internal configuration data",
"description" : "",
"operationId" : "getInternalConfigurationData",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/InternalConfigurationData"
}
}
}
}
},
"/brokers/{cluster}" : {
"get" : {
"tags" : [ "brokers" ],
"summary" : "Get the list of active brokers (web service addresses) in the cluster.",
"description" : "",
"operationId" : "getActiveBrokers",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/brokers/{cluster}/{broker}/ownedNamespaces" : {
"get" : {
"tags" : [ "brokers" ],
"summary" : "Get the list of namespaces served by the specific broker",
"description" : "",
"operationId" : "getOwnedNamespaes",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "broker",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/NamespaceOwnershipStatus"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/clusters" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get the list of all the Pulsar clusters.",
"description" : "",
"operationId" : "getClusters",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/clusters/{cluster}" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get the configuration data for the specified cluster.",
"description" : "",
"operationId" : "getCluster",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ClusterData"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
},
"post" : {
"tags" : [ "clusters" ],
"summary" : "Update the configuration for a cluster.",
"description" : "This operation requires Pulsar super-user privileges.",
"operationId" : "updateCluster",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"204" : {
"description" : "Cluster has been updated"
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
},
"put" : {
"tags" : [ "clusters" ],
"summary" : "Provisions a new cluster. This operation requires Pulsar super-user privileges.",
"description" : "The name cannot contain '/' characters.",
"operationId" : "createCluster",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"204" : {
"description" : "Cluster has been created"
},
"403" : {
"description" : "You don't have admin permission to create the cluster"
},
"409" : {
"description" : "Cluster already exists"
},
"412" : {
"description" : "Cluster name is not valid"
}
}
},
"delete" : {
"tags" : [ "clusters" ],
"summary" : "Delete an existing cluster",
"description" : "",
"operationId" : "deleteCluster",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"204" : {
"description" : "Cluster has been updated"
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
},
"412" : {
"description" : "Cluster is not empty"
}
}
}
},
"/clusters/{cluster}/failureDomains" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get the cluster failure domains",
"description" : "",
"operationId" : "getFailureDomains",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/FailureDomain"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/clusters/{cluster}/failureDomains/{domainName}" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get a domain in a cluster",
"description" : "",
"operationId" : "getDomain",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "domainName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/FailureDomain"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Domain doesn't exist"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
},
"post" : {
"tags" : [ "clusters" ],
"summary" : "Set cluster's failure Domain",
"description" : "",
"operationId" : "setFailureDomain",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "domainName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
},
"409" : {
"description" : "Broker already exists in another domain"
}
}
},
"delete" : {
"tags" : [ "clusters" ],
"summary" : "Delete cluster's failure omain",
"description" : "",
"operationId" : "deleteFailureDomain",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "domainName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission or plicy is read only"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/clusters/{cluster}/namespaceIsolationPolicies" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get the namespace isolation policies assigned in the cluster",
"description" : "",
"operationId" : "getNamespaceIsolationPolicies",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/NamespaceIsolationData"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/clusters/{cluster}/namespaceIsolationPolicies/brokers" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get list of brokers with namespace-isolation policies attached to them",
"description" : "",
"operationId" : "getBrokersWithNamespaceIsolationPolicy",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/BrokerNamespaceIsolationData"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace-isolation policies not found"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/clusters/{cluster}/namespaceIsolationPolicies/brokers/{broker}" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get a broker with namespace-isolation policies attached to it",
"description" : "",
"operationId" : "getBrokerWithNamespaceIsolationPolicy",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "broker",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/BrokerNamespaceIsolationData"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace-isolation policies/ Broker not found"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/clusters/{cluster}/namespaceIsolationPolicies/{policyName}" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get a single namespace isolation policy assigned in the cluster",
"description" : "",
"operationId" : "getNamespaceIsolationPolicy",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "policyName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/NamespaceIsolationData"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Policy doesn't exist"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
},
"post" : {
"tags" : [ "clusters" ],
"summary" : "Set namespace isolation policy",
"description" : "",
"operationId" : "setNamespaceIsolationPolicy",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "policyName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission or plicy is read only"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
},
"delete" : {
"tags" : [ "clusters" ],
"summary" : "Delete namespace isolation policy",
"description" : "",
"operationId" : "deleteNamespaceIsolationPolicy",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "policyName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission or plicy is read only"
},
"412" : {
"description" : "Cluster doesn't exist"
}
}
}
},
"/clusters/{cluster}/peers" : {
"get" : {
"tags" : [ "clusters" ],
"summary" : "Get the peer-cluster data for the specified cluster.",
"description" : "",
"operationId" : "getPeerCluster",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
}
}
},
"post" : {
"tags" : [ "clusters" ],
"summary" : "Update peer-cluster-list for a cluster.",
"description" : "This operation requires Pulsar super-user privileges.",
"operationId" : "setPeerClusterNames",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"204" : {
"description" : "Cluster has been updated"
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Cluster doesn't exist"
},
"412" : {
"description" : "Peer cluster doesn't exist"
}
}
}
},
"/namespaces/{cluster}/antiAffinity/{group}" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "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",
"description" : "",
"operationId" : "getAntiAffinityNamespaces",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "group",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "tenant",
"in" : "query",
"required" : false,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"412" : {
"description" : "Cluster not exist/Anti-affinity group can't be empty."
}
}
}
},
"/namespaces/{tenant}" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the list of all the namespaces for a certain tenant.",
"description" : "",
"operationId" : "getTenantNamespaces",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant doesn't exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the dump all the policies specified for a namespace.",
"description" : "",
"operationId" : "getPolicies",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/Policies"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
}
}
},
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Creates a new namespace with the specified policies",
"description" : "",
"operationId" : "createNamespace",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster doesn't exist"
},
"409" : {
"description" : "Namespace already exists"
},
"412" : {
"description" : "Namespace name is not valid"
}
}
},
"delete" : {
"tags" : [ "namespaces" ],
"summary" : "Delete a namespace and all the topics under it.",
"description" : "",
"operationId" : "deleteNamespace",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"409" : {
"description" : "Namespace is not empty"
}
}
}
},
"/namespaces/{tenant}/{namespace}/antiAffinity" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get anti-affinity group of a namespace.",
"description" : "",
"operationId" : "getNamespaceAntiAffinityGroup",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "string"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set anti-affinity group for a namespace",
"description" : "",
"operationId" : "setNamespaceAntiAffinityGroup",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"412" : {
"description" : "Invalid antiAffinityGroup"
}
}
},
"delete" : {
"tags" : [ "namespaces" ],
"summary" : "Remove anti-affinity group of a namespace.",
"description" : "",
"operationId" : "removeNamespaceAntiAffinityGroup",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/backlogQuota" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : " Set a backlog quota for all the topics on a namespace.",
"description" : "",
"operationId" : "setBacklogQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "backlogQuotaType",
"in" : "query",
"required" : false,
"type" : "string",
"enum" : [ "destination_storage" ]
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "Specified backlog quota exceeds retention quota. Increase retention quota and retry request"
}
}
},
"delete" : {
"tags" : [ "namespaces" ],
"summary" : "Remove a backlog quota policy from a namespace.",
"description" : "",
"operationId" : "removeBacklogQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "backlogQuotaType",
"in" : "query",
"required" : false,
"type" : "string",
"enum" : [ "destination_storage" ]
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/backlogQuotaMap" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get backlog quota map on a namespace.",
"description" : "",
"operationId" : "getBacklogQuotaMap",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/bundles" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the bundles split data.",
"description" : "",
"operationId" : "getBundlesData",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/BundlesData"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"412" : {
"description" : "Namespace is not setup to split in bundles"
}
}
}
},
"/namespaces/{tenant}/{namespace}/clearBacklog" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Clear backlog for all topics on a namespace.",
"description" : "",
"operationId" : "clearNamespaceBacklog",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/clearBacklog/{subscription}" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Clear backlog for a given subscription on all topics on a namespace.",
"description" : "",
"operationId" : "clearNamespaceBacklogForSubscription",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subscription",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/compactionThreshold" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Maximum number of uncompacted bytes in topics before compaction is triggered.",
"description" : "The backlog size is compared to the threshold periodically. A threshold of 0 disabled automatic compaction",
"operationId" : "getCompactionThreshold",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int64"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
},
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Set maximum number of uncompacted bytes in a topic before compaction is triggered.",
"description" : "The backlog size is compared to the threshold periodically. A threshold of 0 disabled automatic compaction",
"operationId" : "setCompactionThreshold",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "compactionThreshold value is not valid"
}
}
}
},
"/namespaces/{tenant}/{namespace}/deduplication" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Enable or disable broker side deduplication for all topics in a namespace",
"description" : "",
"operationId" : "modifyDeduplication",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/dispatchRate" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get dispatch-rate configured for the namespace, -1 represents not configured yet",
"description" : "",
"operationId" : "getDispatchRate",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/DispatchRate"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set dispatch-rate throttling for all topics of the namespace",
"description" : "",
"operationId" : "setDispatchRate",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/namespaces/{tenant}/{namespace}/encryptionRequired" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Message encryption is required or not for all topics in a namespace",
"description" : "",
"operationId" : "modifyEncryptionRequired",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/maxConsumersPerSubscription" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get maxConsumersPerSubscription config on a namespace.",
"description" : "",
"operationId" : "getMaxConsumersPerSubscription",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int32"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : " Set maxConsumersPerSubscription configuration on a namespace.",
"description" : "",
"operationId" : "setMaxConsumersPerSubscription",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "maxConsumersPerSubscription value is not valid"
}
}
}
},
"/namespaces/{tenant}/{namespace}/maxConsumersPerTopic" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get maxConsumersPerTopic config on a namespace.",
"description" : "",
"operationId" : "getMaxConsumersPerTopic",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int32"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : " Set maxConsumersPerTopic configuration on a namespace.",
"description" : "",
"operationId" : "setMaxConsumersPerTopic",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "maxConsumersPerTopic value is not valid"
}
}
}
},
"/namespaces/{tenant}/{namespace}/maxProducersPerTopic" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get maxProducersPerTopic config on a namespace.",
"description" : "",
"operationId" : "getMaxProducersPerTopic",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int32"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : " Set maxProducersPerTopic configuration on a namespace.",
"description" : "",
"operationId" : "setMaxProducersPerTopic",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "maxProducersPerTopic value is not valid"
}
}
}
},
"/namespaces/{tenant}/{namespace}/messageTTL" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the message TTL for the namespace",
"description" : "",
"operationId" : "getNamespaceMessageTTL",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int32"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set message TTL in seconds for namespace",
"description" : "",
"operationId" : "setNamespaceMessageTTL",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"412" : {
"description" : "Invalid TTL"
}
}
}
},
"/namespaces/{tenant}/{namespace}/offloadDeletionLagMs" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Number of milliseconds to wait before deleting a ledger segment which has been offloaded from the Pulsar cluster's local storage (i.e. BookKeeper)",
"description" : "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.",
"operationId" : "getOffloadDeletionLag",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int64"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
},
"put" : {
"tags" : [ "namespaces" ],
"summary" : "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)",
"description" : "A negative value disables the deletion completely.",
"operationId" : "setOffloadDeletionLag",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "offloadDeletionLagMs value is not valid"
}
}
},
"delete" : {
"tags" : [ "namespaces" ],
"summary" : "Clear the namespace configured offload deletion lag. The topics in the namespace will fallback to using the default configured deletion lag for the broker",
"description" : "",
"operationId" : "clearOffloadDeletionLag",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/offloadThreshold" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Maximum number of bytes stored on the pulsar cluster for a topic, before the broker will start offloading to longterm storage",
"description" : "A negative value disables automatic offloading",
"operationId" : "getOffloadThreshold",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "integer",
"format" : "int64"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
},
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Set maximum number of bytes stored on the pulsar cluster for a topic, before the broker will start offloading to longterm storage",
"description" : "A negative value disables automatic offloading",
"operationId" : "setOffloadThreshold",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "offloadThreshold value is not valid"
}
}
}
},
"/namespaces/{tenant}/{namespace}/permissions" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Retrieve the permissions for a namespace.",
"description" : "",
"operationId" : "getPermissions",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"409" : {
"description" : "Namespace is not empty"
}
}
}
},
"/namespaces/{tenant}/{namespace}/permissions/{role}" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Grant a new permission to a role on a namespace.",
"description" : "",
"operationId" : "grantPermissionOnNamespace",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "role",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
},
"501" : {
"description" : "Authorization is not enabled"
}
}
},
"delete" : {
"tags" : [ "namespaces" ],
"summary" : "Revoke all permissions to a role on a namespace.",
"description" : "",
"operationId" : "revokePermissionsOnNamespace",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "role",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/persistence" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the persistence configuration for a namespace.",
"description" : "",
"operationId" : "getPersistence",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PersistencePolicies"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set the persistence configuration for all the topics on a namespace.",
"description" : "",
"operationId" : "setPersistence",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"400" : {
"description" : "Invalid persistence policies"
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/replication" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the replication clusters for a namespace.",
"description" : "",
"operationId" : "getNamespaceReplicationClusters",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"412" : {
"description" : "Namespace is not global"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set the replication clusters for a namespace.",
"description" : "",
"operationId" : "setNamespaceReplicationClusters",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"409" : {
"description" : "Peer-cluster can't be part of replication-cluster"
},
"412" : {
"description" : "Namespace is not global or invalid cluster ids"
}
}
}
},
"/namespaces/{tenant}/{namespace}/retention" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get retention config on a namespace.",
"description" : "",
"operationId" : "getRetention",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/RetentionPolicies"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : " Set retention configuration on a namespace.",
"description" : "",
"operationId" : "setRetention",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
},
"412" : {
"description" : "Retention Quota must exceed backlog quota"
}
}
}
},
"/namespaces/{tenant}/{namespace}/schemaAutoUpdateCompatibilityStrategy" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "The strategy used to check the compatibility of new schemas, provided by producers, before automatically updating the schema",
"description" : "The value AutoUpdateDisabled prevents producers from updating the schema. If set to AutoUpdateDisabled, schemas must be updated through the REST api",
"operationId" : "getSchemaAutoUpdateCompatibilityStrategy",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "string",
"enum" : [ "AutoUpdateDisabled", "Backward", "Forward", "Full", "AlwaysCompatible" ]
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
},
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Update the strategy used to check the compatibility of new schemas, provided by producers, before automatically updating the schema",
"description" : "The value AutoUpdateDisabled prevents producers from updating the schema. If set to AutoUpdateDisabled, schemas must be updated through the REST api",
"operationId" : "setSchemaAutoUpdateCompatibilityStrategy",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/subscribeRate" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get subscribe-rate configured for the namespace",
"description" : "",
"operationId" : "getSubscribeRate",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/SubscribeRate"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set subscribe-rate throttling for all topics of the namespace",
"description" : "",
"operationId" : "setSubscribeRate",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/namespaces/{tenant}/{namespace}/subscriptionAuthMode" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : " Set a subscription auth mode for all the topics on a namespace.",
"description" : "",
"operationId" : "setSubscriptionAuthMode",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/namespaces/{tenant}/{namespace}/subscriptionDispatchRate" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get Subscription dispatch-rate configured for the namespace, -1 represents not configured yet",
"description" : "",
"operationId" : "getSubscriptionDispatchRate",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/DispatchRate"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Set Subscription dispatch-rate throttling for all topics of the namespace",
"description" : "",
"operationId" : "setSubscriptionDispatchRate",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/namespaces/{tenant}/{namespace}/topics" : {
"get" : {
"tags" : [ "namespaces" ],
"summary" : "Get the list of all the topics under a certain namespace.",
"description" : "",
"operationId" : "getTopics",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "mode",
"in" : "query",
"required" : false,
"type" : "string",
"default" : "PERSISTENT",
"enum" : [ "PERSISTENT", "NON_PERSISTENT", "ALL" ]
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/unload" : {
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Unload namespace",
"description" : "Unload an active namespace from the current broker serving it. Performing this operation will let the brokerremoves all producers, consumers, and connections using this namespace, and close all topics (includingtheir persistent store). During that operation, the namespace is marked as tentatively unavailable until thebroker completes the unloading action. This operation requires strictly super user privileges, since it wouldresult in non-persistent message loss and unexpected connection closure to the clients.",
"operationId" : "unloadNamespace",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or namespace doesn't exist"
},
"412" : {
"description" : "Namespace is already unloaded or Namespace has bundles activated"
}
}
}
},
"/namespaces/{tenant}/{namespace}/unsubscribe/{subscription}" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Unsubscribes the given subscription on all topics on a namespace.",
"description" : "",
"operationId" : "unsubscribeNamespace",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "cluster",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subscription",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/{bundle}" : {
"delete" : {
"tags" : [ "namespaces" ],
"summary" : "Delete a namespace bundle and all the topics under it.",
"description" : "",
"operationId" : "deleteNamespaceBundle",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Tenant or cluster or namespace doesn't exist"
},
"409" : {
"description" : "Namespace bundle is not empty"
}
}
}
},
"/namespaces/{tenant}/{namespace}/{bundle}/clearBacklog" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Clear backlog for all topics on a namespace bundle.",
"description" : "",
"operationId" : "clearNamespaceBundleBacklog",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/{bundle}/clearBacklog/{subscription}" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Clear backlog for a given subscription on all topics on a namespace bundle.",
"description" : "",
"operationId" : "clearNamespaceBundleBacklogForSubscription",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subscription",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/namespaces/{tenant}/{namespace}/{bundle}/split" : {
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Split a namespace bundle",
"description" : "",
"operationId" : "splitNamespaceBundle",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
}, {
"name" : "unload",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/namespaces/{tenant}/{namespace}/{bundle}/unload" : {
"put" : {
"tags" : [ "namespaces" ],
"summary" : "Unload a namespace bundle",
"description" : "",
"operationId" : "unloadNamespaceBundle",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/namespaces/{tenant}/{namespace}/{bundle}/unsubscribe/{subscription}" : {
"post" : {
"tags" : [ "namespaces" ],
"summary" : "Unsubscribes the given subscription on all topics on a namespace bundle.",
"description" : "",
"operationId" : "unsubscribeNamespaceBundle",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subscription",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the list of non-persistent topics under a namespace.",
"description" : "",
"operationId" : "getList",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/partitioned" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the list of partitioned topics under a namespace.",
"description" : "",
"operationId" : "getPartitionedTopicList",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{bundle}" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the list of non-persistent topics under a namespace bundle.",
"description" : "",
"operationId" : "getListFromBundle",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}" : {
"delete" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Delete a topic.",
"description" : "The topic cannot be deleted if delete is not forcefully and there's any active subscription or producer connected to the it. Force delete ignores connected clients and deletes topic by explicitly closing them.",
"operationId" : "deleteTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "force",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"412" : {
"description" : "Topic has active producers/subscriptions"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/all_subscription/expireMessages/{expireTimeInSeconds}" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Expire messages on all subscriptions of topic.",
"description" : "",
"operationId" : "expireMessagesForAllSubscriptions",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "expireTimeInSeconds",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/backlog" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get estimated backlog for offline topic.",
"description" : "",
"operationId" : "getBacklog",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PersistentOfflineTopicStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/compaction" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the status of a compaction operation for a topic.",
"description" : "",
"operationId" : "compactionStatus",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/LongRunningProcessStatus"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist, or compaction hasn't run"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
}
}
},
"put" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Trigger a compaction operation on a topic.",
"description" : "",
"operationId" : "compact",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
},
"409" : {
"description" : "Compaction already running"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/internal-info" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the internal stats for the topic.",
"description" : "",
"operationId" : "getManagedLedgerInfo",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/internalStats" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the internal stats for the topic.",
"description" : "",
"operationId" : "getInternalStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PersistentTopicInternalStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/lastMessageId" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Return the last commit message id of topic",
"description" : "",
"operationId" : "getLastMessageId",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/MessageId"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/offload" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Offload a prefix of a topic to long term storage",
"description" : "",
"operationId" : "offloadStatus",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/OffloadProcessStatus"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
}
}
},
"put" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Offload a prefix of a topic to long term storage",
"description" : "",
"operationId" : "triggerOffload",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
},
"409" : {
"description" : "Offload already running"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/partitioned-stats" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the stats for the partitioned topic.",
"description" : "",
"operationId" : "getPartitionedStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PartitionedTopicStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/partitions" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get partitioned topic metadata.",
"description" : "",
"operationId" : "getPartitionedMetadata",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PartitionedTopicMetadata"
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
},
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Increment partitons of an existing partitioned topic.",
"description" : "It only increments partitions of existing non-global partitioned-topic",
"operationId" : "updatePartitionedTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Partitioned topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
},
"put" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Create a partitioned topic.",
"description" : "It needs to be called before creating a producer on a partitioned topic.",
"operationId" : "createPartitionedTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Partitioned topic already exists"
},
"412" : {
"description" : "Failed Reason : Name is invalid or Namespace does not have any clusters configured"
},
"503" : {
"description" : "Failed to validate global cluster configuration"
}
}
},
"delete" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Delete a partitioned topic.",
"description" : "It will also delete all the partitions of the topic if it exists.",
"operationId" : "deletePartitionedTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "force",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Partitioned topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/permissions" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get permissions on a topic.",
"description" : "Retrieve the effective permissions for a topic. These permissions are defined by the permissions set at thenamespace level combined (union) with any eventual specific permission set on the topic.",
"operationId" : "getPermissionsOnTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/permissions/{role}" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Grant a new permission to a role on a single topic.",
"description" : "",
"operationId" : "grantPermissionsOnTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "role",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
},
"delete" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Revoke permissions on a topic.",
"description" : "Revoke permissions to a role on a single topic. If the permission was not set at the topiclevel, but rather at the namespace level, this operation will return an error (HTTP status code 412).",
"operationId" : "revokePermissionsOnTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "role",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"412" : {
"description" : "Permissions are not set at the topic level"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/stats" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the stats for the topic.",
"description" : "",
"operationId" : "getStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/NonPersistentTopicStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}" : {
"delete" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Delete a subscription.",
"description" : "There should not be any active consumers on the subscription.",
"operationId" : "deleteSubscription",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"412" : {
"description" : "Subscription has active consumers"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/expireMessages/{expireTimeInSeconds}" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Expire messages on a topic subscription.",
"description" : "",
"operationId" : "expireTopicMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "expireTimeInSeconds",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/position/{messagePosition}" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Peek nth message on a topic subscription.",
"description" : "",
"operationId" : "peekNthMessage",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "messagePosition",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic, subscription or the message position does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Reset subscription to message position closest to given position.",
"description" : "It fence cursor and disconnects all active consumers before reseting cursor.",
"operationId" : "resetCursorOnPosition",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic/Subscription does not exist"
},
"405" : {
"description" : "Not supported for partitioned topics"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor/{timestamp}" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Reset subscription to message position closest to absolute timestamp (in ms).",
"description" : "It fence cursor and disconnects all active consumers before reseting cursor.",
"operationId" : "resetCursor",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "timestamp",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int64"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic/Subscription does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip/{numMessages}" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Skip messages on a topic subscription.",
"description" : "",
"operationId" : "skipMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "numMessages",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip_all" : {
"post" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Skip all messages on a topic subscription.",
"description" : "Completely clears the backlog on the subscription.",
"operationId" : "skipAllMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
},
"405" : {
"description" : "Operation not allowed on non-persistent topic"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscription/{subscriptionName}" : {
"put" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Reset subscription to message position closest to given position.",
"description" : "Creates a subscription on the topic at the specified message id",
"operationId" : "createSubscription",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subscriptionName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic/Subscription does not exist"
},
"405" : {
"description" : "Not supported for partitioned topics"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/subscriptions" : {
"get" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Get the list of persistent subscriptions for a given topic.",
"description" : "",
"operationId" : "getSubscriptions",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/non-persistent/{tenant}/{namespace}/{topic}/unload" : {
"put" : {
"tags" : [ "non-persistent topic" ],
"summary" : "Unload a topic",
"description" : "",
"operationId" : "unloadTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the list of topics under a namespace.",
"description" : "",
"operationId" : "getList",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/partitioned" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the list of partitioned topics under a namespace.",
"description" : "",
"operationId" : "getPartitionedTopicList",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}" : {
"delete" : {
"tags" : [ "persistent topic" ],
"summary" : "Delete a topic.",
"description" : "The topic cannot be deleted if delete is not forcefully and there's any active subscription or producer connected to the it. Force delete ignores connected clients and deletes topic by explicitly closing them.",
"operationId" : "deleteTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "force",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"412" : {
"description" : "Topic has active producers/subscriptions"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/all_subscription/expireMessages/{expireTimeInSeconds}" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Expire messages on all subscriptions of topic.",
"description" : "",
"operationId" : "expireMessagesForAllSubscriptions",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "expireTimeInSeconds",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/backlog" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get estimated backlog for offline topic.",
"description" : "",
"operationId" : "getBacklog",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PersistentOfflineTopicStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/compaction" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the status of a compaction operation for a topic.",
"description" : "",
"operationId" : "compactionStatus",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/LongRunningProcessStatus"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist, or compaction hasn't run"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
}
}
},
"put" : {
"tags" : [ "persistent topic" ],
"summary" : "Trigger a compaction operation on a topic.",
"description" : "",
"operationId" : "compact",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
},
"409" : {
"description" : "Compaction already running"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/internal-info" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the internal stats for the topic.",
"description" : "",
"operationId" : "getManagedLedgerInfo",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/internalStats" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the internal stats for the topic.",
"description" : "",
"operationId" : "getInternalStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PersistentTopicInternalStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/lastMessageId" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Return the last commit message id of topic",
"description" : "",
"operationId" : "getLastMessageId",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/MessageId"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/offload" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Offload a prefix of a topic to long term storage",
"description" : "",
"operationId" : "offloadStatus",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/OffloadProcessStatus"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
}
}
},
"put" : {
"tags" : [ "persistent topic" ],
"summary" : "Offload a prefix of a topic to long term storage",
"description" : "",
"operationId" : "triggerOffload",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on persistent topic"
},
"409" : {
"description" : "Offload already running"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/partitioned-stats" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the stats for the partitioned topic.",
"description" : "",
"operationId" : "getPartitionedStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PartitionedTopicStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/partitions" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get partitioned topic metadata.",
"description" : "",
"operationId" : "getPartitionedMetadata",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PartitionedTopicMetadata"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Partitioned topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
},
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Increment partitons of an existing partitioned topic.",
"description" : "It only increments partitions of existing non-global partitioned-topic",
"operationId" : "updatePartitionedTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Partitioned topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
},
"put" : {
"tags" : [ "persistent topic" ],
"summary" : "Create a partitioned topic.",
"description" : "It needs to be called before creating a producer on a partitioned topic.",
"operationId" : "createPartitionedTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Partitioned topic already exist"
},
"412" : {
"description" : "Failed Reason : Name is invalid or Namespace does not have any clusters configured"
},
"503" : {
"description" : "Failed to validate global cluster configuration"
}
}
},
"delete" : {
"tags" : [ "persistent topic" ],
"summary" : "Delete a partitioned topic.",
"description" : "It will also delete all the partitions of the topic if it exists.",
"operationId" : "deletePartitionedTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "force",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Partitioned topic does not exist"
},
"412" : {
"description" : "Partitioned topic name is invalid"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/permissions" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get permissions on a topic.",
"description" : "Retrieve the effective permissions for a topic. These permissions are defined by the permissions set at thenamespace level combined (union) with any eventual specific permission set on the topic.",
"operationId" : "getPermissionsOnTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object",
"additionalProperties" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/permissions/{role}" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Grant a new permission to a role on a single topic.",
"description" : "",
"operationId" : "grantPermissionsOnTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "role",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"409" : {
"description" : "Concurrent modification"
}
}
},
"delete" : {
"tags" : [ "persistent topic" ],
"summary" : "Revoke permissions on a topic.",
"description" : "Revoke permissions to a role on a single topic. If the permission was not set at the topiclevel, but rather at the namespace level, this operation will return an error (HTTP status code 412).",
"operationId" : "revokePermissionsOnTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "role",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace doesn't exist"
},
"412" : {
"description" : "Permissions are not set at the topic level"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/stats" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the stats for the topic.",
"description" : "",
"operationId" : "getStats",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/TopicStats"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}" : {
"delete" : {
"tags" : [ "persistent topic" ],
"summary" : "Delete a subscription.",
"description" : "There should not be any active consumers on the subscription.",
"operationId" : "deleteSubscription",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"412" : {
"description" : "Subscription has active consumers"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/expireMessages/{expireTimeInSeconds}" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Expire messages on a topic subscription.",
"description" : "",
"operationId" : "expireTopicMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "expireTimeInSeconds",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/position/{messagePosition}" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Peek nth message on a topic subscription.",
"description" : "",
"operationId" : "peekNthMessage",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "messagePosition",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic, subscription or the message position does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Reset subscription to message position closest to given position.",
"description" : "It fence cursor and disconnects all active consumers before reseting cursor.",
"operationId" : "resetCursorOnPosition",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic/Subscription does not exist"
},
"405" : {
"description" : "Not supported for partitioned topics"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/resetcursor/{timestamp}" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Reset subscription to message position closest to absolute timestamp (in ms).",
"description" : "It fence cursor and disconnects all active consumers before reseting cursor.",
"operationId" : "resetCursor",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "timestamp",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int64"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic/Subscription does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip/{numMessages}" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Skip messages on a topic subscription.",
"description" : "",
"operationId" : "skipMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "numMessages",
"in" : "path",
"required" : true,
"type" : "integer",
"format" : "int32"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subName}/skip_all" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Skip all messages on a topic subscription.",
"description" : "Completely clears the backlog on the subscription.",
"operationId" : "skipAllMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic or subscription does not exist"
},
"405" : {
"description" : "Operation not allowed on non-persistent topic"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscription/{subscriptionName}" : {
"put" : {
"tags" : [ "persistent topic" ],
"summary" : "Reset subscription to message position closest to given position.",
"description" : "Creates a subscription on the topic at the specified message id",
"operationId" : "createSubscription",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "subscriptionName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic/Subscription does not exist"
},
"405" : {
"description" : "Not supported for partitioned topics"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/subscriptions" : {
"get" : {
"tags" : [ "persistent topic" ],
"summary" : "Get the list of persistent subscriptions for a given topic.",
"description" : "",
"operationId" : "getSubscriptions",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "object"
}
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/terminate" : {
"post" : {
"tags" : [ "persistent topic" ],
"summary" : "Terminate a persistent topic. A topic that is terminated will not accept any more messages to be published and will let consumer to drain existing messages in backlog",
"description" : "",
"operationId" : "terminate",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/MessageId"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
},
"405" : {
"description" : "Operation not allowed on non-persistent topic"
}
}
}
},
"/persistent/{tenant}/{namespace}/{topic}/unload" : {
"put" : {
"tags" : [ "persistent topic" ],
"summary" : "Unload a topic",
"description" : "",
"operationId" : "unloadTopic",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Topic does not exist"
}
}
}
},
"/resource-quotas" : {
"get" : {
"tags" : [ "resource-quotas" ],
"summary" : "Get the default quota",
"description" : "",
"operationId" : "getDefaultResourceQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
},
"post" : {
"tags" : [ "resource-quotas" ],
"summary" : "Set the default quota",
"description" : "",
"operationId" : "setDefaultResourceQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "Don't have admin permission"
}
}
}
},
"/resource-quotas/{tenant}/{namespace}/{bundle}" : {
"get" : {
"tags" : [ "resource-quotas" ],
"summary" : "Get resource quota of a namespace bundle.",
"description" : "",
"operationId" : "getNamespaceBundleResourceQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ResourceQuota"
}
},
"403" : {
"description" : "Don't have admin permission"
},
"404" : {
"description" : "Namespace does not exist"
}
}
},
"post" : {
"tags" : [ "resource-quotas" ],
"summary" : "Set resource quota on a namespace.",
"description" : "",
"operationId" : "setNamespaceBundleResourceQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Concurrent modification"
}
}
},
"delete" : {
"tags" : [ "resource-quotas" ],
"summary" : "Remove resource quota for a namespace.",
"description" : "",
"operationId" : "removeNamespaceBundleResourceQuota",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "bundle",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "Don't have admin permission"
},
"409" : {
"description" : "Concurrent modification"
}
}
}
},
"/schemas/{tenant}/{namespace}/{topic}/schema" : {
"get" : {
"tags" : [ "schemas" ],
"summary" : "Get the schema of a topic",
"description" : "",
"operationId" : "getSchema",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/GetSchemaResponse"
}
},
"307" : {
"description" : "Current broker doesn't serve the namespace of this topic"
},
"401" : {
"description" : "Client is not authorized or Don't have admin permission"
},
"403" : {
"description" : "Client is not authenticated"
},
"404" : {
"description" : "Tenant or Namespace or Topic doesn't exist; or Schema is not found for this topic"
},
"412" : {
"description" : "Failed to find the ownership for the topic"
}
}
},
"post" : {
"tags" : [ "schemas" ],
"summary" : "Update the schema of a topic",
"description" : "",
"operationId" : "postSchema",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"in" : "body",
"name" : "body",
"description" : "A JSON value presenting a schema playload. An example of the expected schema can be found down here.",
"required" : false,
"schema" : {
"$ref" : "#/definitions/PostSchemaPayload"
},
"x-examples" : {
"application/json" : "{\"type\": \"STRING\", \"schema\": \"\", \"properties\": { \"key1\" : \"value1\" + } }"
}
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/PostSchemaResponse"
}
},
"307" : {
"description" : "Current broker doesn't serve the namespace of this topic"
},
"401" : {
"description" : "Client is not authorized or Don't have admin permission"
},
"403" : {
"description" : "Client is not authenticated"
},
"404" : {
"description" : "Tenant or Namespace or Topic doesn't exist"
},
"412" : {
"description" : "Failed to find the ownership for the topic"
}
}
},
"delete" : {
"tags" : [ "schemas" ],
"summary" : "Delete the schema of a topic",
"description" : "",
"operationId" : "deleteSchema",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/DeleteSchemaResponse"
}
},
"307" : {
"description" : "Current broker doesn't serve the namespace of this topic"
},
"401" : {
"description" : "Client is not authorized or Don't have admin permission"
},
"403" : {
"description" : "Client is not authenticated"
},
"404" : {
"description" : "Tenant or Namespace or Topic doesn't exist"
},
"412" : {
"description" : "Failed to find the ownership for the topic"
}
}
}
},
"/schemas/{tenant}/{namespace}/{topic}/schema/{version}" : {
"get" : {
"tags" : [ "schemas" ],
"summary" : "Get the schema of a topic at a given version",
"description" : "",
"operationId" : "getSchema",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "namespace",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "topic",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "version",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "authoritative",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/GetSchemaResponse"
}
},
"307" : {
"description" : "Current broker doesn't serve the namespace of this topic"
},
"401" : {
"description" : "Client is not authorized or Don't have admin permission"
},
"403" : {
"description" : "Client is not authenticated"
},
"404" : {
"description" : "Tenant or Namespace or Topic doesn't exist; or Schema is not found for this topic"
},
"412" : {
"description" : "Failed to find the ownership for the topic"
}
}
}
},
"/tenants" : {
"get" : {
"tags" : [ "tenants" ],
"summary" : "Get the list of tenants.",
"description" : "",
"operationId" : "getTenants",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
},
"403" : {
"description" : "The requester doesn't have admin permissions"
},
"404" : {
"description" : "Tenant doesn't exist"
}
}
}
},
"/tenants/{tenant}" : {
"get" : {
"tags" : [ "tenants" ],
"summary" : "Get the admin configuration for a given tenant.",
"description" : "",
"operationId" : "getTenantAdmin",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/TenantInfo"
}
},
"403" : {
"description" : "The requester doesn't have admin permissions"
},
"404" : {
"description" : "Tenant does not exist"
}
}
},
"post" : {
"tags" : [ "tenants" ],
"summary" : "Update the admins for a tenant.",
"description" : "This operation requires Pulsar super-user privileges.",
"operationId" : "updateTenant",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "The requester doesn't have admin permissions"
},
"404" : {
"description" : "Tenant does not exist"
},
"409" : {
"description" : "Tenant already exists"
}
}
},
"put" : {
"tags" : [ "tenants" ],
"summary" : "Create a new tenant.",
"description" : "This operation requires Pulsar super-user privileges.",
"operationId" : "createTenant",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "The requester doesn't have admin permissions"
},
"409" : {
"description" : "Tenant already exists"
},
"412" : {
"description" : "Tenant name is not valid"
}
}
},
"delete" : {
"tags" : [ "tenants" ],
"summary" : "Delete a tenant and all namespaces and topics under it.",
"description" : "",
"operationId" : "deleteTenant",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "tenant",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"403" : {
"description" : "The requester doesn't have admin permissions"
},
"404" : {
"description" : "Tenant does not exist"
},
"409" : {
"description" : "The tenant still has active namespaces"
}
}
}
}
},
"definitions" : {
"AllocatorStats" : {
"type" : "object",
"properties" : {
"numDirectArenas" : {
"type" : "integer",
"format" : "int32"
},
"numHeapArenas" : {
"type" : "integer",
"format" : "int32"
},
"numThreadLocalCaches" : {
"type" : "integer",
"format" : "int32"
},
"normalCacheSize" : {
"type" : "integer",
"format" : "int32"
},
"smallCacheSize" : {
"type" : "integer",
"format" : "int32"
},
"tinyCacheSize" : {
"type" : "integer",
"format" : "int32"
},
"directArenas" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PoolArenaStats"
}
},
"heapArenas" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PoolArenaStats"
}
}
}
},
"AuthPolicies" : {
"type" : "object",
"properties" : {
"namespace_auth" : {
"type" : "object",
"additionalProperties" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string",
"enum" : [ "produce", "consume" ]
}
}
},
"destination_auth" : {
"type" : "object",
"additionalProperties" : {
"type" : "object",
"additionalProperties" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string",
"enum" : [ "produce", "consume" ]
}
}
}
},
"subscription_auth_roles" : {
"type" : "object",
"additionalProperties" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
}
}
},
"AutoFailoverPolicyData" : {
"type" : "object",
"properties" : {
"policy_type" : {
"type" : "string",
"enum" : [ "min_available" ]
},
"parameters" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
}
}
},
"BacklogQuota" : {
"type" : "object",
"properties" : {
"limit" : {
"type" : "integer",
"format" : "int64"
},
"policy" : {
"type" : "string",
"enum" : [ "producer_request_hold", "producer_exception", "consumer_backlog_eviction" ]
}
}
},
"BookieInfo" : {
"type" : "object",
"properties" : {
"rack" : {
"type" : "string"
},
"hostname" : {
"type" : "string"
}
}
},
"BrokerNamespaceIsolationData" : {
"type" : "object",
"properties" : {
"brokerName" : {
"type" : "string"
},
"namespaceRegex" : {
"type" : "array",
"items" : {
"type" : "string"
}
}
}
},
"BundlesData" : {
"type" : "object",
"properties" : {
"boundaries" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
"numBundles" : {
"type" : "integer",
"format" : "int32"
}
}
},
"ClusterData" : {
"type" : "object",
"properties" : {
"serviceUrl" : {
"type" : "string"
},
"serviceUrlTls" : {
"type" : "string"
},
"brokerServiceUrl" : {
"type" : "string"
},
"brokerServiceUrlTls" : {
"type" : "string"
},
"peerClusterNames" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
}
},
"ConsumerStats" : {
"type" : "object",
"properties" : {
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"msgRateRedeliver" : {
"type" : "number",
"format" : "double"
},
"consumerName" : {
"type" : "string"
},
"availablePermits" : {
"type" : "integer",
"format" : "int32"
},
"unackedMessages" : {
"type" : "integer",
"format" : "int32"
},
"blockedConsumerOnUnackedMsgs" : {
"type" : "boolean"
},
"metadata" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
},
"address" : {
"type" : "string"
},
"connectedSince" : {
"type" : "string"
},
"clientVersion" : {
"type" : "string"
}
}
},
"CursorDetails" : {
"type" : "object",
"properties" : {
"cursorBacklog" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedgerId" : {
"type" : "integer",
"format" : "int64"
}
}
},
"CursorStats" : {
"type" : "object",
"properties" : {
"markDeletePosition" : {
"type" : "string"
},
"readPosition" : {
"type" : "string"
},
"waitingReadOp" : {
"type" : "boolean"
},
"pendingReadOps" : {
"type" : "integer",
"format" : "int32"
},
"messagesConsumedCounter" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedger" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedgerLastEntry" : {
"type" : "integer",
"format" : "int64"
},
"individuallyDeletedMessages" : {
"type" : "string"
},
"lastLedgerSwitchTimestamp" : {
"type" : "string"
},
"state" : {
"type" : "string"
},
"numberOfEntriesSinceFirstNotAckedMessage" : {
"type" : "integer",
"format" : "int64"
},
"totalNonContiguousDeletedMessagesRange" : {
"type" : "integer",
"format" : "int32"
},
"properties" : {
"type" : "object",
"additionalProperties" : {
"type" : "integer",
"format" : "int64"
}
}
}
},
"DeleteSchemaResponse" : {
"type" : "object",
"properties" : {
"version" : {
"type" : "integer",
"format" : "int64"
}
}
},
"DispatchRate" : {
"type" : "object",
"properties" : {
"dispatchThrottlingRateInMsg" : {
"type" : "integer",
"format" : "int32"
},
"dispatchThrottlingRateInByte" : {
"type" : "integer",
"format" : "int64"
},
"ratePeriodInSecond" : {
"type" : "integer",
"format" : "int32"
}
}
},
"FailureDomain" : {
"type" : "object",
"properties" : {
"brokers" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
}
},
"GetSchemaResponse" : {
"type" : "object",
"properties" : {
"version" : {
"type" : "integer",
"format" : "int64"
},
"type" : {
"type" : "string",
"enum" : [ "NONE", "STRING", "JSON", "PROTOBUF", "AVRO", "BOOLEAN", "INT8", "INT16", "INT32", "INT64", "FLOAT", "DOUBLE", "DATE", "TIME", "TIMESTAMP", "KEY_VALUE", "BYTES", "AUTO", "AUTO_CONSUME", "AUTO_PUBLISH" ]
},
"timestamp" : {
"type" : "integer",
"format" : "int64"
},
"data" : {
"type" : "string"
},
"properties" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
}
}
},
"InternalConfigurationData" : {
"type" : "object",
"properties" : {
"zookeeperServers" : {
"type" : "string"
},
"configurationStoreServers" : {
"type" : "string"
},
"ledgersRootPath" : {
"type" : "string"
},
"stateStorageServiceUrl" : {
"type" : "string"
}
}
},
"LedgerDetails" : {
"type" : "object",
"properties" : {
"entries" : {
"type" : "integer",
"format" : "int64"
},
"timestamp" : {
"type" : "integer",
"format" : "int64"
},
"size" : {
"type" : "integer",
"format" : "int64"
},
"ledgerId" : {
"type" : "integer",
"format" : "int64"
}
}
},
"LedgerInfo" : {
"type" : "object",
"properties" : {
"ledgerId" : {
"type" : "integer",
"format" : "int64"
},
"entries" : {
"type" : "integer",
"format" : "int64"
},
"size" : {
"type" : "integer",
"format" : "int64"
},
"offloaded" : {
"type" : "boolean"
}
}
},
"LoadReport" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"brokerVersionString" : {
"type" : "string"
},
"webServiceUrl" : {
"type" : "string"
},
"webServiceUrlTls" : {
"type" : "string"
},
"pulsarServiceUrl" : {
"type" : "string"
},
"pulsarServiceUrlTls" : {
"type" : "string"
},
"persistentTopicsEnabled" : {
"type" : "boolean"
},
"nonPersistentTopicsEnabled" : {
"type" : "boolean"
},
"timestamp" : {
"type" : "integer",
"format" : "int64"
},
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"numTopics" : {
"type" : "integer",
"format" : "int32"
},
"numConsumers" : {
"type" : "integer",
"format" : "int32"
},
"numProducers" : {
"type" : "integer",
"format" : "int32"
},
"numBundles" : {
"type" : "integer",
"format" : "int32"
},
"systemResourceUsage" : {
"$ref" : "#/definitions/SystemResourceUsage"
},
"bundleStats" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/NamespaceBundleStats"
}
},
"bundleGains" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
},
"bundleLosses" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
},
"allocatedCPU" : {
"type" : "number",
"format" : "double"
},
"allocatedMemory" : {
"type" : "number",
"format" : "double"
},
"allocatedBandwidthIn" : {
"type" : "number",
"format" : "double"
},
"allocatedBandwidthOut" : {
"type" : "number",
"format" : "double"
},
"allocatedMsgRateIn" : {
"type" : "number",
"format" : "double"
},
"allocatedMsgRateOut" : {
"type" : "number",
"format" : "double"
},
"preAllocatedCPU" : {
"type" : "number",
"format" : "double"
},
"preAllocatedMemory" : {
"type" : "number",
"format" : "double"
},
"preAllocatedBandwidthIn" : {
"type" : "number",
"format" : "double"
},
"preAllocatedBandwidthOut" : {
"type" : "number",
"format" : "double"
},
"preAllocatedMsgRateIn" : {
"type" : "number",
"format" : "double"
},
"preAllocatedMsgRateOut" : {
"type" : "number",
"format" : "double"
},
"underLoaded" : {
"type" : "boolean"
},
"overLoaded" : {
"type" : "boolean"
},
"loadReportType" : {
"type" : "string"
},
"directMemory" : {
"$ref" : "#/definitions/ResourceUsage"
},
"bandwidthIn" : {
"$ref" : "#/definitions/ResourceUsage"
},
"cpu" : {
"$ref" : "#/definitions/ResourceUsage"
},
"memory" : {
"$ref" : "#/definitions/ResourceUsage"
},
"bandwidthOut" : {
"$ref" : "#/definitions/ResourceUsage"
},
"lastUpdate" : {
"type" : "integer",
"format" : "int64"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
}
}
},
"LongRunningProcessStatus" : {
"type" : "object",
"properties" : {
"status" : {
"type" : "string",
"enum" : [ "NOT_RUN", "RUNNING", "SUCCESS", "ERROR" ]
},
"lastError" : {
"type" : "string"
}
}
},
"MessageId" : {
"type" : "object"
},
"MessageIdImpl" : {
"type" : "object",
"properties" : {
"ledgerId" : {
"type" : "integer",
"format" : "int64"
},
"entryId" : {
"type" : "integer",
"format" : "int64"
},
"partitionIndex" : {
"type" : "integer",
"format" : "int32"
}
}
},
"Metrics" : {
"type" : "object",
"properties" : {
"metrics" : {
"type" : "object",
"additionalProperties" : {
"type" : "object"
}
},
"dimensions" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
}
}
},
"NamespaceBundleStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"consumerCount" : {
"type" : "integer",
"format" : "int32"
},
"producerCount" : {
"type" : "integer",
"format" : "int32"
},
"topics" : {
"type" : "integer",
"format" : "int64"
},
"cacheSize" : {
"type" : "integer",
"format" : "int64"
}
}
},
"NamespaceIsolationData" : {
"type" : "object",
"properties" : {
"namespaces" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
"primary" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
"secondary" : {
"type" : "array",
"items" : {
"type" : "string"
}
},
"auto_failover_policy" : {
"$ref" : "#/definitions/AutoFailoverPolicyData"
}
}
},
"NamespaceOwnershipStatus" : {
"type" : "object",
"properties" : {
"broker_assignment" : {
"type" : "string",
"enum" : [ "primary", "secondary", "shared" ]
},
"is_controlled" : {
"type" : "boolean"
},
"is_active" : {
"type" : "boolean"
}
}
},
"NonPersistentPublisherStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"averageMsgSize" : {
"type" : "number",
"format" : "double"
},
"producerId" : {
"type" : "integer",
"format" : "int64"
},
"metadata" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
},
"msgDropRate" : {
"type" : "number",
"format" : "double"
},
"address" : {
"type" : "string"
},
"producerName" : {
"type" : "string"
},
"connectedSince" : {
"type" : "string"
},
"clientVersion" : {
"type" : "string"
}
}
},
"NonPersistentReplicatorStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"msgRateExpired" : {
"type" : "number",
"format" : "double"
},
"replicationBacklog" : {
"type" : "integer",
"format" : "int64"
},
"connected" : {
"type" : "boolean"
},
"replicationDelayInSeconds" : {
"type" : "integer",
"format" : "int64"
},
"inboundConnection" : {
"type" : "string"
},
"inboundConnectedSince" : {
"type" : "string"
},
"outboundConnection" : {
"type" : "string"
},
"outboundConnectedSince" : {
"type" : "string"
},
"msgDropRate" : {
"type" : "number",
"format" : "double"
}
}
},
"NonPersistentSubscriptionStats" : {
"type" : "object",
"properties" : {
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"msgRateRedeliver" : {
"type" : "number",
"format" : "double"
},
"msgBacklog" : {
"type" : "integer",
"format" : "int64"
},
"blockedSubscriptionOnUnackedMsgs" : {
"type" : "boolean"
},
"unackedMessages" : {
"type" : "integer",
"format" : "int64"
},
"type" : {
"type" : "string",
"enum" : [ "Exclusive", "Shared", "Failover" ]
},
"activeConsumerName" : {
"type" : "string"
},
"msgRateExpired" : {
"type" : "number",
"format" : "double"
},
"consumers" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/ConsumerStats"
}
},
"msgDropRate" : {
"type" : "number",
"format" : "double"
}
}
},
"NonPersistentTopicStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"averageMsgSize" : {
"type" : "number",
"format" : "double"
},
"storageSize" : {
"type" : "integer",
"format" : "int64"
},
"publishers" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/NonPersistentPublisherStats"
}
},
"subscriptions" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/NonPersistentSubscriptionStats"
}
},
"replication" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/NonPersistentReplicatorStats"
}
},
"deduplicationStatus" : {
"type" : "string"
},
"msgDropRate" : {
"type" : "number",
"format" : "double"
}
}
},
"OffloadProcessStatus" : {
"type" : "object",
"properties" : {
"status" : {
"type" : "string",
"enum" : [ "NOT_RUN", "RUNNING", "SUCCESS", "ERROR" ]
},
"lastError" : {
"type" : "string"
},
"firstUnoffloadedMessage" : {
"$ref" : "#/definitions/MessageIdImpl"
}
}
},
"OutputStream" : {
"type" : "object"
},
"PartitionedTopicMetadata" : {
"type" : "object",
"properties" : {
"partitions" : {
"type" : "integer",
"format" : "int32"
}
}
},
"PartitionedTopicStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"averageMsgSize" : {
"type" : "number",
"format" : "double"
},
"storageSize" : {
"type" : "integer",
"format" : "int64"
},
"publishers" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PublisherStats"
}
},
"subscriptions" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/SubscriptionStats"
}
},
"replication" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/ReplicatorStats"
}
},
"deduplicationStatus" : {
"type" : "string"
},
"metadata" : {
"$ref" : "#/definitions/PartitionedTopicMetadata"
},
"partitions" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/TopicStats"
}
}
}
},
"PendingBookieOpsStats" : {
"type" : "object",
"properties" : {
"dataLedgerOpenOp" : {
"type" : "integer",
"format" : "int64"
},
"dataLedgerCloseOp" : {
"type" : "integer",
"format" : "int64"
},
"dataLedgerCreateOp" : {
"type" : "integer",
"format" : "int64"
},
"dataLedgerDeleteOp" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedgerOpenOp" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedgerCloseOp" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedgerCreateOp" : {
"type" : "integer",
"format" : "int64"
},
"cursorLedgerDeleteOp" : {
"type" : "integer",
"format" : "int64"
}
}
},
"PersistencePolicies" : {
"type" : "object",
"properties" : {
"bookkeeperEnsemble" : {
"type" : "integer",
"format" : "int32"
},
"bookkeeperWriteQuorum" : {
"type" : "integer",
"format" : "int32"
},
"bookkeeperAckQuorum" : {
"type" : "integer",
"format" : "int32"
},
"managedLedgerMaxMarkDeleteRate" : {
"type" : "number",
"format" : "double"
}
}
},
"PersistentOfflineTopicStats" : {
"type" : "object",
"properties" : {
"storageSize" : {
"type" : "integer",
"format" : "int64"
},
"totalMessages" : {
"type" : "integer",
"format" : "int64"
},
"messageBacklog" : {
"type" : "integer",
"format" : "int64"
},
"brokerName" : {
"type" : "string"
},
"topicName" : {
"type" : "string"
},
"dataLedgerDetails" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/LedgerDetails"
}
},
"cursorDetails" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/CursorDetails"
}
},
"statGeneratedAt" : {
"type" : "string",
"format" : "date-time"
}
}
},
"PersistentTopicInternalStats" : {
"type" : "object",
"properties" : {
"entriesAddedCounter" : {
"type" : "integer",
"format" : "int64"
},
"numberOfEntries" : {
"type" : "integer",
"format" : "int64"
},
"totalSize" : {
"type" : "integer",
"format" : "int64"
},
"currentLedgerEntries" : {
"type" : "integer",
"format" : "int64"
},
"currentLedgerSize" : {
"type" : "integer",
"format" : "int64"
},
"lastLedgerCreatedTimestamp" : {
"type" : "string"
},
"lastLedgerCreationFailureTimestamp" : {
"type" : "string"
},
"waitingCursorsCount" : {
"type" : "integer",
"format" : "int32"
},
"pendingAddEntriesCount" : {
"type" : "integer",
"format" : "int32"
},
"lastConfirmedEntry" : {
"type" : "string"
},
"state" : {
"type" : "string"
},
"ledgers" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/LedgerInfo"
}
},
"cursors" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/CursorStats"
}
}
}
},
"Policies" : {
"type" : "object",
"properties" : {
"auth_policies" : {
"$ref" : "#/definitions/AuthPolicies"
},
"replication_clusters" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
},
"bundles" : {
"$ref" : "#/definitions/BundlesData"
},
"backlog_quota_map" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/BacklogQuota"
}
},
"clusterDispatchRate" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/DispatchRate"
}
},
"subscriptionDispatchRate" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/DispatchRate"
}
},
"clusterSubscribeRate" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/SubscribeRate"
}
},
"persistence" : {
"$ref" : "#/definitions/PersistencePolicies"
},
"deduplicationEnabled" : {
"type" : "boolean"
},
"latency_stats_sample_rate" : {
"type" : "object",
"additionalProperties" : {
"type" : "integer",
"format" : "int32"
}
},
"message_ttl_in_seconds" : {
"type" : "integer",
"format" : "int32"
},
"retention_policies" : {
"$ref" : "#/definitions/RetentionPolicies"
},
"deleted" : {
"type" : "boolean"
},
"antiAffinityGroup" : {
"type" : "string"
},
"encryption_required" : {
"type" : "boolean"
},
"subscription_auth_mode" : {
"type" : "string",
"enum" : [ "None", "Prefix" ]
},
"max_producers_per_topic" : {
"type" : "integer",
"format" : "int32"
},
"max_consumers_per_topic" : {
"type" : "integer",
"format" : "int32"
},
"max_consumers_per_subscription" : {
"type" : "integer",
"format" : "int32"
},
"compaction_threshold" : {
"type" : "integer",
"format" : "int64"
},
"offload_threshold" : {
"type" : "integer",
"format" : "int64"
},
"offload_deletion_lag_ms" : {
"type" : "integer",
"format" : "int64"
},
"schema_auto_update_compatibility_strategy" : {
"type" : "string",
"enum" : [ "AutoUpdateDisabled", "Backward", "Forward", "Full", "AlwaysCompatible" ]
}
}
},
"PoolArenaStats" : {
"type" : "object",
"properties" : {
"numTinySubpages" : {
"type" : "integer",
"format" : "int32"
},
"numSmallSubpages" : {
"type" : "integer",
"format" : "int32"
},
"numChunkLists" : {
"type" : "integer",
"format" : "int32"
},
"tinySubpages" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PoolSubpageStats"
}
},
"smallSubpages" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PoolSubpageStats"
}
},
"chunkLists" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PoolChunkListStats"
}
},
"numAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numTinyAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numSmallAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numNormalAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numHugeAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numDeallocations" : {
"type" : "integer",
"format" : "int64"
},
"numTinyDeallocations" : {
"type" : "integer",
"format" : "int64"
},
"numSmallDeallocations" : {
"type" : "integer",
"format" : "int64"
},
"numNormalDeallocations" : {
"type" : "integer",
"format" : "int64"
},
"numHugeDeallocations" : {
"type" : "integer",
"format" : "int64"
},
"numActiveAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numActiveTinyAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numActiveSmallAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numActiveNormalAllocations" : {
"type" : "integer",
"format" : "int64"
},
"numActiveHugeAllocations" : {
"type" : "integer",
"format" : "int64"
}
}
},
"PoolChunkListStats" : {
"type" : "object",
"properties" : {
"minUsage" : {
"type" : "integer",
"format" : "int32"
},
"maxUsage" : {
"type" : "integer",
"format" : "int32"
},
"chunks" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PoolChunkStats"
}
}
}
},
"PoolChunkStats" : {
"type" : "object",
"properties" : {
"usage" : {
"type" : "integer",
"format" : "int32"
},
"chunkSize" : {
"type" : "integer",
"format" : "int32"
},
"freeBytes" : {
"type" : "integer",
"format" : "int32"
}
}
},
"PoolSubpageStats" : {
"type" : "object",
"properties" : {
"maxNumElements" : {
"type" : "integer",
"format" : "int32"
},
"numAvailable" : {
"type" : "integer",
"format" : "int32"
},
"elementSize" : {
"type" : "integer",
"format" : "int32"
},
"pageSize" : {
"type" : "integer",
"format" : "int32"
}
}
},
"PostSchemaPayload" : {
"type" : "object",
"properties" : {
"type" : {
"type" : "string"
},
"schema" : {
"type" : "string"
},
"properties" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
}
}
},
"PostSchemaResponse" : {
"type" : "object",
"properties" : {
"version" : {
"$ref" : "#/definitions/SchemaVersion"
}
}
},
"PublisherStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"averageMsgSize" : {
"type" : "number",
"format" : "double"
},
"producerId" : {
"type" : "integer",
"format" : "int64"
},
"metadata" : {
"type" : "object",
"additionalProperties" : {
"type" : "string"
}
},
"address" : {
"type" : "string"
},
"producerName" : {
"type" : "string"
},
"connectedSince" : {
"type" : "string"
},
"clientVersion" : {
"type" : "string"
}
}
},
"ReplicatorStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"msgRateExpired" : {
"type" : "number",
"format" : "double"
},
"replicationBacklog" : {
"type" : "integer",
"format" : "int64"
},
"connected" : {
"type" : "boolean"
},
"replicationDelayInSeconds" : {
"type" : "integer",
"format" : "int64"
},
"inboundConnection" : {
"type" : "string"
},
"inboundConnectedSince" : {
"type" : "string"
},
"outboundConnection" : {
"type" : "string"
},
"outboundConnectedSince" : {
"type" : "string"
}
}
},
"ResourceDescription" : {
"type" : "object",
"properties" : {
"usagePct" : {
"type" : "integer",
"format" : "int32"
},
"resourceUsage" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/ResourceUsage"
}
}
}
},
"ResourceQuota" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"bandwidthIn" : {
"type" : "number",
"format" : "double"
},
"bandwidthOut" : {
"type" : "number",
"format" : "double"
},
"memory" : {
"type" : "number",
"format" : "double"
},
"dynamic" : {
"type" : "boolean"
}
}
},
"ResourceUnit" : {
"type" : "object",
"properties" : {
"resourceId" : {
"type" : "string"
},
"availableResource" : {
"$ref" : "#/definitions/ResourceDescription"
}
}
},
"ResourceUsage" : {
"type" : "object",
"properties" : {
"usage" : {
"type" : "number",
"format" : "double"
},
"limit" : {
"type" : "number",
"format" : "double"
}
}
},
"RetentionPolicies" : {
"type" : "object",
"properties" : {
"retentionTimeInMinutes" : {
"type" : "integer",
"format" : "int32"
},
"retentionSizeInMB" : {
"type" : "integer",
"format" : "int64"
}
}
},
"SchemaVersion" : {
"type" : "object"
},
"SubscribeRate" : {
"type" : "object",
"properties" : {
"subscribeThrottlingRatePerConsumer" : {
"type" : "integer",
"format" : "int32"
},
"ratePeriodInSecond" : {
"type" : "integer",
"format" : "int32"
}
}
},
"SubscriptionStats" : {
"type" : "object",
"properties" : {
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"msgRateRedeliver" : {
"type" : "number",
"format" : "double"
},
"msgBacklog" : {
"type" : "integer",
"format" : "int64"
},
"blockedSubscriptionOnUnackedMsgs" : {
"type" : "boolean"
},
"unackedMessages" : {
"type" : "integer",
"format" : "int64"
},
"type" : {
"type" : "string",
"enum" : [ "Exclusive", "Shared", "Failover" ]
},
"activeConsumerName" : {
"type" : "string"
},
"msgRateExpired" : {
"type" : "number",
"format" : "double"
},
"consumers" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/ConsumerStats"
}
}
}
},
"SystemResourceUsage" : {
"type" : "object",
"properties" : {
"bandwidthIn" : {
"$ref" : "#/definitions/ResourceUsage"
},
"bandwidthOut" : {
"$ref" : "#/definitions/ResourceUsage"
},
"cpu" : {
"$ref" : "#/definitions/ResourceUsage"
},
"memory" : {
"$ref" : "#/definitions/ResourceUsage"
},
"directMemory" : {
"$ref" : "#/definitions/ResourceUsage"
}
}
},
"TenantInfo" : {
"type" : "object",
"properties" : {
"adminRoles" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
},
"allowedClusters" : {
"type" : "array",
"uniqueItems" : true,
"items" : {
"type" : "string"
}
}
}
},
"TopicStats" : {
"type" : "object",
"properties" : {
"msgRateIn" : {
"type" : "number",
"format" : "double"
},
"msgThroughputIn" : {
"type" : "number",
"format" : "double"
},
"msgRateOut" : {
"type" : "number",
"format" : "double"
},
"msgThroughputOut" : {
"type" : "number",
"format" : "double"
},
"averageMsgSize" : {
"type" : "number",
"format" : "double"
},
"storageSize" : {
"type" : "integer",
"format" : "int64"
},
"publishers" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/PublisherStats"
}
},
"subscriptions" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/SubscriptionStats"
}
},
"replication" : {
"type" : "object",
"additionalProperties" : {
"$ref" : "#/definitions/ReplicatorStats"
}
},
"deduplicationStatus" : {
"type" : "string"
}
}
}
}
}