This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pulsar-site.git
The following commit(s) were added to refs/heads/main by this push:
new 40b2c31fa04 Docs sync done from apache/pulsar (#027f4e9)
40b2c31fa04 is described below
commit 40b2c31fa0412fffaae988d316b1ef0eeb055d5e
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Sat Jun 13 01:47:59 2026 +0000
Docs sync done from apache/pulsar (#027f4e9)
---
.../next/config/reference-configuration-broker.md | 199 +++++++++++
.../config/reference-configuration-standalone.md | 199 +++++++++++
static/swagger/master/swagger.json | 389 +++++++++++++++++++++
static/swagger/master/v2/swagger.json | 389 +++++++++++++++++++++
4 files changed, 1176 insertions(+)
diff --git a/static/reference/next/config/reference-configuration-broker.md
b/static/reference/next/config/reference-configuration-broker.md
index 49a6a77f6aa..dace5cdc0b1 100644
--- a/static/reference/next/config/reference-configuration-broker.md
+++ b/static/reference/next/config/reference-configuration-broker.md
@@ -2380,6 +2380,28 @@ Interval (in seconds) for ResourceGroupService periodic
tasks while resource gro
**Category**: Policies
+### scalableTopicAutoScaleEnabled
+Cluster-wide default for scalable-topic auto split/merge. When true, the
controller leader automatically splits hot segments and merges cold ones,
within the caps below. Can be overridden per-namespace and per-topic.
+
+**Type**: `boolean`
+
+**Default**: `true`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicAutoScaleIntervalSeconds
+Cadence (seconds) of the controller's periodic traffic-driven auto split/merge
evaluation. Consumer-count changes are handled event-driven and are not
affected by this interval. Read when a controller wins leadership; not dynamic.
+
+**Type**: `int`
+
+**Default**: `60`
+
+**Dynamic**: `false`
+
+**Category**: Policies
+
### scalableTopicConsumerSessionGracePeriodSeconds
Grace period (seconds) the controller leader waits for a disconnected
scalable-topic consumer to reconnect with the same consumer name before
evicting its session and reassigning its segments to remaining consumers.
@@ -2391,6 +2413,183 @@ Grace period (seconds) the controller leader waits for
a disconnected scalable-t
**Category**: Policies
+### scalableTopicLoadReportIntervalSeconds
+Interval (seconds) at which the segment-owning broker samples its segment
topics to report load for auto split/merge. Read at broker start; not dynamic.
+
+**Type**: `int`
+
+**Default**: `10`
+
+**Dynamic**: `false`
+
+**Category**: Policies
+
+### scalableTopicLoadReportRateChangeThreshold
+Minimum relative change in any segment rate (e.g. 0.25 = 25%) since the last
write that triggers a new load record. Keeps metadata write volume bounded; a
steady-state segment writes once and goes quiet.
+Note: the band is anchored at the last written value, not at the split/merge
thresholds. A rate that settles within the band of the last record is never
re-reported, so a segment can sustain up to this factor beyond a split/merge
threshold without triggering — the cost of bounded write volume. Lower the
threshold for tighter tracking at the price of more metadata writes.
+
+**Type**: `double`
+
+**Default**: `0.25`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMaxDagDepth
+Max number of merges allowed in a segment's lineage. Once a segment reaches
this depth it stops being a merge candidate (load-driven splits are still
allowed), bounding split/merge flip-flopping.
+
+**Type**: `int`
+
+**Default**: `10`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMaxSegments
+Hard ceiling on the number of active segments a scalable topic can be
auto-scaled to. Splits stop firing once this is reached.
+
+**Type**: `int`
+
+**Default**: `64`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeBytesRateInThreshold
+Inbound bytes/second below which a segment counts as cold for merging.
+
+**Type**: `long`
+
+**Default**: `5000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeBytesRateOutThreshold
+Outbound bytes/second below which a segment counts as cold for merging.
+
+**Type**: `long`
+
+**Default**: `25000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeCooldownSeconds
+Minimum time (seconds) between automatic merges on a topic.
+
+**Type**: `int`
+
+**Default**: `300`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeMsgRateInThreshold
+Inbound messages/second below which a segment counts as cold for merging.
+
+**Type**: `double`
+
+**Default**: `1000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeMsgRateOutThreshold
+Outbound messages/second below which a segment counts as cold for merging.
+
+**Type**: `double`
+
+**Default**: `5000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeWindowSeconds
+How long (seconds) a segment must continuously stay below every merge
threshold before it becomes merge-eligible.
+
+**Type**: `int`
+
+**Default**: `300`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMinSegments
+Hard floor on the number of active segments. Merges stop firing once this is
reached.
+
+**Type**: `int`
+
+**Default**: `1`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitBytesRateInThreshold
+Inbound bytes/second above which a segment is split.
+
+**Type**: `long`
+
+**Default**: `50000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitBytesRateOutThreshold
+Outbound bytes/second above which a segment is split.
+
+**Type**: `long`
+
+**Default**: `250000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitCooldownSeconds
+Minimum time (seconds) between automatic splits on a topic. Deliberately short
— it only coalesces a burst of near-simultaneous triggers (e.g. a consumer
group connecting at once).
+
+**Type**: `int`
+
+**Default**: `60`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitMsgRateInThreshold
+Inbound messages/second above which a segment is split.
+
+**Type**: `double`
+
+**Default**: `10000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitMsgRateOutThreshold
+Outbound (dispatched) messages/second above which a segment is split.
+
+**Type**: `double`
+
+**Default**: `50000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
### scalableTopicsEnabled
Enables the scalable-topics V5 API on this broker. When disabled, the broker
advertises supports_scalable_topics=false in CommandConnected feature flags and
rejects scalable-topic commands from clients.
diff --git a/static/reference/next/config/reference-configuration-standalone.md
b/static/reference/next/config/reference-configuration-standalone.md
index 49a6a77f6aa..dace5cdc0b1 100644
--- a/static/reference/next/config/reference-configuration-standalone.md
+++ b/static/reference/next/config/reference-configuration-standalone.md
@@ -2380,6 +2380,28 @@ Interval (in seconds) for ResourceGroupService periodic
tasks while resource gro
**Category**: Policies
+### scalableTopicAutoScaleEnabled
+Cluster-wide default for scalable-topic auto split/merge. When true, the
controller leader automatically splits hot segments and merges cold ones,
within the caps below. Can be overridden per-namespace and per-topic.
+
+**Type**: `boolean`
+
+**Default**: `true`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicAutoScaleIntervalSeconds
+Cadence (seconds) of the controller's periodic traffic-driven auto split/merge
evaluation. Consumer-count changes are handled event-driven and are not
affected by this interval. Read when a controller wins leadership; not dynamic.
+
+**Type**: `int`
+
+**Default**: `60`
+
+**Dynamic**: `false`
+
+**Category**: Policies
+
### scalableTopicConsumerSessionGracePeriodSeconds
Grace period (seconds) the controller leader waits for a disconnected
scalable-topic consumer to reconnect with the same consumer name before
evicting its session and reassigning its segments to remaining consumers.
@@ -2391,6 +2413,183 @@ Grace period (seconds) the controller leader waits for
a disconnected scalable-t
**Category**: Policies
+### scalableTopicLoadReportIntervalSeconds
+Interval (seconds) at which the segment-owning broker samples its segment
topics to report load for auto split/merge. Read at broker start; not dynamic.
+
+**Type**: `int`
+
+**Default**: `10`
+
+**Dynamic**: `false`
+
+**Category**: Policies
+
+### scalableTopicLoadReportRateChangeThreshold
+Minimum relative change in any segment rate (e.g. 0.25 = 25%) since the last
write that triggers a new load record. Keeps metadata write volume bounded; a
steady-state segment writes once and goes quiet.
+Note: the band is anchored at the last written value, not at the split/merge
thresholds. A rate that settles within the band of the last record is never
re-reported, so a segment can sustain up to this factor beyond a split/merge
threshold without triggering — the cost of bounded write volume. Lower the
threshold for tighter tracking at the price of more metadata writes.
+
+**Type**: `double`
+
+**Default**: `0.25`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMaxDagDepth
+Max number of merges allowed in a segment's lineage. Once a segment reaches
this depth it stops being a merge candidate (load-driven splits are still
allowed), bounding split/merge flip-flopping.
+
+**Type**: `int`
+
+**Default**: `10`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMaxSegments
+Hard ceiling on the number of active segments a scalable topic can be
auto-scaled to. Splits stop firing once this is reached.
+
+**Type**: `int`
+
+**Default**: `64`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeBytesRateInThreshold
+Inbound bytes/second below which a segment counts as cold for merging.
+
+**Type**: `long`
+
+**Default**: `5000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeBytesRateOutThreshold
+Outbound bytes/second below which a segment counts as cold for merging.
+
+**Type**: `long`
+
+**Default**: `25000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeCooldownSeconds
+Minimum time (seconds) between automatic merges on a topic.
+
+**Type**: `int`
+
+**Default**: `300`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeMsgRateInThreshold
+Inbound messages/second below which a segment counts as cold for merging.
+
+**Type**: `double`
+
+**Default**: `1000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeMsgRateOutThreshold
+Outbound messages/second below which a segment counts as cold for merging.
+
+**Type**: `double`
+
+**Default**: `5000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMergeWindowSeconds
+How long (seconds) a segment must continuously stay below every merge
threshold before it becomes merge-eligible.
+
+**Type**: `int`
+
+**Default**: `300`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicMinSegments
+Hard floor on the number of active segments. Merges stop firing once this is
reached.
+
+**Type**: `int`
+
+**Default**: `1`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitBytesRateInThreshold
+Inbound bytes/second above which a segment is split.
+
+**Type**: `long`
+
+**Default**: `50000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitBytesRateOutThreshold
+Outbound bytes/second above which a segment is split.
+
+**Type**: `long`
+
+**Default**: `250000000`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitCooldownSeconds
+Minimum time (seconds) between automatic splits on a topic. Deliberately short
— it only coalesces a burst of near-simultaneous triggers (e.g. a consumer
group connecting at once).
+
+**Type**: `int`
+
+**Default**: `60`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitMsgRateInThreshold
+Inbound messages/second above which a segment is split.
+
+**Type**: `double`
+
+**Default**: `10000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
+### scalableTopicSplitMsgRateOutThreshold
+Outbound (dispatched) messages/second above which a segment is split.
+
+**Type**: `double`
+
+**Default**: `50000.0`
+
+**Dynamic**: `true`
+
+**Category**: Policies
+
### scalableTopicsEnabled
Enables the scalable-topics V5 API on this broker. When disabled, the broker
advertises supports_scalable_topics=false in CommandConnected feature flags and
rejects scalable-topic commands from clients.
diff --git a/static/swagger/master/swagger.json
b/static/swagger/master/swagger.json
index 4b1333b37b1..86b55473fc4 100644
--- a/static/swagger/master/swagger.json
+++ b/static/swagger/master/swagger.json
@@ -124,6 +124,70 @@
},
"type": "object"
},
+ "AutoScalePolicyOverride": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "maxDagDepth": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxSegments": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "mergeBytesRateInThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "mergeBytesRateOutThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "mergeCooldownSeconds": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "mergeMsgRateInThreshold": {
+ "format": "double",
+ "type": "number"
+ },
+ "mergeMsgRateOutThreshold": {
+ "format": "double",
+ "type": "number"
+ },
+ "mergeWindowSeconds": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "minSegments": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "splitBytesRateInThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "splitBytesRateOutThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "splitCooldownSeconds": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "splitMsgRateInThreshold": {
+ "format": "double",
+ "type": "number"
+ },
+ "splitMsgRateOutThreshold": {
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
"AutoSubscriptionCreationOverride": {
"properties": {
"allowAutoSubscriptionCreation": {
@@ -3373,6 +3437,9 @@
"retention_policies": {
"$ref": "#/components/schemas/RetentionPolicies"
},
+ "scalableTopicAutoScalePolicy": {
+ "$ref": "#/components/schemas/AutoScalePolicyOverride"
+ },
"schema_auto_update_compatibility_strategy": {
"enum": [
"AutoUpdateDisabled",
@@ -3892,6 +3959,9 @@
},
"ScalableTopicMetadata": {
"properties": {
+ "autoScalePolicy": {
+ "$ref": "#/components/schemas/AutoScalePolicyOverride"
+ },
"epoch": {
"format": "int64",
"type": "integer"
@@ -11579,6 +11649,140 @@
]
}
},
+ "/namespaces/{tenant}/{namespace}/scalableTopicAutoScalePolicy": {
+ "delete": {
+ "operationId": "removeScalableTopicAutoScalePolicy",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Operation successful"
+ },
+ "403": {
+ "description": "Don't have admin permission"
+ },
+ "404": {
+ "description": "Tenant or cluster or namespace doesn't
exist"
+ }
+ },
+ "summary": "Remove the scalable-topic auto split/merge policy
override from a namespace",
+ "tags": [
+ "namespaces"
+ ]
+ },
+ "get": {
+ "operationId": "getScalableTopicAutoScalePolicy",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "The scalable-topic auto split/merge
policy override for the namespace"
+ },
+ "204": {
+ "description": "No override is set on this namespace"
+ },
+ "403": {
+ "description": "Don't have admin permission"
+ },
+ "404": {
+ "description": "Tenant or namespace doesn't exist"
+ }
+ },
+ "summary": "Get the scalable-topic auto split/merge policy
override for a namespace",
+ "tags": [
+ "namespaces"
+ ]
+ },
+ "post": {
+ "operationId": "setScalableTopicAutoScalePolicy",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "Auto split/merge policy override",
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "Operation successful"
+ },
+ "403": {
+ "description": "Don't have admin permission"
+ },
+ "404": {
+ "description": "Tenant or cluster or namespace doesn't
exist"
+ },
+ "412": {
+ "description": "The resolved auto split/merge policy
violates an invariant"
+ }
+ },
+ "summary": "Override the broker's scalable-topic auto
split/merge settings for a namespace",
+ "tags": [
+ "namespaces"
+ ]
+ }
+ },
"/namespaces/{tenant}/{namespace}/scanOffloadedLedgers": {
"get": {
"operationId": "scanOffloadedLedgers",
@@ -37359,6 +37563,191 @@
]
}
},
+ "/scalable/{tenant}/{namespace}/{topic}/autoScalePolicy": {
+ "delete": {
+ "operationId": "removeAutoScalePolicy",
+ "parameters": [
+ {
+ "description": "Specify the tenant",
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify the namespace",
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify topic name",
+ "in": "path",
+ "name": "topic",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Override removed successfully"
+ },
+ "401": {
+ "description": "Don't have permission to administrate
resources on this tenant"
+ },
+ "403": {
+ "description": "Don't have admin permission on the
namespace"
+ },
+ "404": {
+ "description": "Scalable topic doesn't exist"
+ },
+ "500": {
+ "description": "Internal server error"
+ }
+ },
+ "summary": "Remove the per-topic auto split/merge policy
override.",
+ "tags": [
+ "scalable topic"
+ ]
+ },
+ "get": {
+ "operationId": "getAutoScalePolicy",
+ "parameters": [
+ {
+ "description": "Specify the tenant",
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify the namespace",
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify topic name",
+ "in": "path",
+ "name": "topic",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "The per-topic auto split/merge policy
override."
+ },
+ "204": {
+ "description": "No override is set on this topic"
+ },
+ "401": {
+ "description": "Don't have permission to administrate
resources on this tenant"
+ },
+ "403": {
+ "description": "Don't have admin permission on the
namespace"
+ },
+ "404": {
+ "description": "Scalable topic doesn't exist"
+ },
+ "500": {
+ "description": "Internal server error"
+ }
+ },
+ "summary": "Get the per-topic auto split/merge policy
override.",
+ "tags": [
+ "scalable topic"
+ ]
+ },
+ "post": {
+ "operationId": "setAutoScalePolicy",
+ "parameters": [
+ {
+ "description": "Specify the tenant",
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify the namespace",
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify topic name",
+ "in": "path",
+ "name": "topic",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "*/*": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "Auto split/merge policy override",
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "Override set successfully"
+ },
+ "401": {
+ "description": "Don't have permission to administrate
resources on this tenant"
+ },
+ "403": {
+ "description": "Don't have admin permission on the
namespace"
+ },
+ "404": {
+ "description": "Scalable topic doesn't exist"
+ },
+ "412": {
+ "description": "The resolved auto split/merge policy
violates an invariant"
+ },
+ "500": {
+ "description": "Internal server error"
+ }
+ },
+ "summary": "Set the per-topic auto split/merge policy
override.",
+ "tags": [
+ "scalable topic"
+ ]
+ }
+ },
"/scalable/{tenant}/{namespace}/{topic}/merge/{segmentId1}/{segmentId2}": {
"post": {
"operationId": "mergeSegments",
diff --git a/static/swagger/master/v2/swagger.json
b/static/swagger/master/v2/swagger.json
index 4b1333b37b1..86b55473fc4 100644
--- a/static/swagger/master/v2/swagger.json
+++ b/static/swagger/master/v2/swagger.json
@@ -124,6 +124,70 @@
},
"type": "object"
},
+ "AutoScalePolicyOverride": {
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "maxDagDepth": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxSegments": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "mergeBytesRateInThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "mergeBytesRateOutThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "mergeCooldownSeconds": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "mergeMsgRateInThreshold": {
+ "format": "double",
+ "type": "number"
+ },
+ "mergeMsgRateOutThreshold": {
+ "format": "double",
+ "type": "number"
+ },
+ "mergeWindowSeconds": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "minSegments": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "splitBytesRateInThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "splitBytesRateOutThreshold": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "splitCooldownSeconds": {
+ "format": "int64",
+ "type": "integer"
+ },
+ "splitMsgRateInThreshold": {
+ "format": "double",
+ "type": "number"
+ },
+ "splitMsgRateOutThreshold": {
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
"AutoSubscriptionCreationOverride": {
"properties": {
"allowAutoSubscriptionCreation": {
@@ -3373,6 +3437,9 @@
"retention_policies": {
"$ref": "#/components/schemas/RetentionPolicies"
},
+ "scalableTopicAutoScalePolicy": {
+ "$ref": "#/components/schemas/AutoScalePolicyOverride"
+ },
"schema_auto_update_compatibility_strategy": {
"enum": [
"AutoUpdateDisabled",
@@ -3892,6 +3959,9 @@
},
"ScalableTopicMetadata": {
"properties": {
+ "autoScalePolicy": {
+ "$ref": "#/components/schemas/AutoScalePolicyOverride"
+ },
"epoch": {
"format": "int64",
"type": "integer"
@@ -11579,6 +11649,140 @@
]
}
},
+ "/namespaces/{tenant}/{namespace}/scalableTopicAutoScalePolicy": {
+ "delete": {
+ "operationId": "removeScalableTopicAutoScalePolicy",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Operation successful"
+ },
+ "403": {
+ "description": "Don't have admin permission"
+ },
+ "404": {
+ "description": "Tenant or cluster or namespace doesn't
exist"
+ }
+ },
+ "summary": "Remove the scalable-topic auto split/merge policy
override from a namespace",
+ "tags": [
+ "namespaces"
+ ]
+ },
+ "get": {
+ "operationId": "getScalableTopicAutoScalePolicy",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "The scalable-topic auto split/merge
policy override for the namespace"
+ },
+ "204": {
+ "description": "No override is set on this namespace"
+ },
+ "403": {
+ "description": "Don't have admin permission"
+ },
+ "404": {
+ "description": "Tenant or namespace doesn't exist"
+ }
+ },
+ "summary": "Get the scalable-topic auto split/merge policy
override for a namespace",
+ "tags": [
+ "namespaces"
+ ]
+ },
+ "post": {
+ "operationId": "setScalableTopicAutoScalePolicy",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "Auto split/merge policy override",
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "Operation successful"
+ },
+ "403": {
+ "description": "Don't have admin permission"
+ },
+ "404": {
+ "description": "Tenant or cluster or namespace doesn't
exist"
+ },
+ "412": {
+ "description": "The resolved auto split/merge policy
violates an invariant"
+ }
+ },
+ "summary": "Override the broker's scalable-topic auto
split/merge settings for a namespace",
+ "tags": [
+ "namespaces"
+ ]
+ }
+ },
"/namespaces/{tenant}/{namespace}/scanOffloadedLedgers": {
"get": {
"operationId": "scanOffloadedLedgers",
@@ -37359,6 +37563,191 @@
]
}
},
+ "/scalable/{tenant}/{namespace}/{topic}/autoScalePolicy": {
+ "delete": {
+ "operationId": "removeAutoScalePolicy",
+ "parameters": [
+ {
+ "description": "Specify the tenant",
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify the namespace",
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify topic name",
+ "in": "path",
+ "name": "topic",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Override removed successfully"
+ },
+ "401": {
+ "description": "Don't have permission to administrate
resources on this tenant"
+ },
+ "403": {
+ "description": "Don't have admin permission on the
namespace"
+ },
+ "404": {
+ "description": "Scalable topic doesn't exist"
+ },
+ "500": {
+ "description": "Internal server error"
+ }
+ },
+ "summary": "Remove the per-topic auto split/merge policy
override.",
+ "tags": [
+ "scalable topic"
+ ]
+ },
+ "get": {
+ "operationId": "getAutoScalePolicy",
+ "parameters": [
+ {
+ "description": "Specify the tenant",
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify the namespace",
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify topic name",
+ "in": "path",
+ "name": "topic",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "The per-topic auto split/merge policy
override."
+ },
+ "204": {
+ "description": "No override is set on this topic"
+ },
+ "401": {
+ "description": "Don't have permission to administrate
resources on this tenant"
+ },
+ "403": {
+ "description": "Don't have admin permission on the
namespace"
+ },
+ "404": {
+ "description": "Scalable topic doesn't exist"
+ },
+ "500": {
+ "description": "Internal server error"
+ }
+ },
+ "summary": "Get the per-topic auto split/merge policy
override.",
+ "tags": [
+ "scalable topic"
+ ]
+ },
+ "post": {
+ "operationId": "setAutoScalePolicy",
+ "parameters": [
+ {
+ "description": "Specify the tenant",
+ "in": "path",
+ "name": "tenant",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify the namespace",
+ "in": "path",
+ "name": "namespace",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "description": "Specify topic name",
+ "in": "path",
+ "name": "topic",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "*/*": {
+ "schema": {
+ "$ref":
"#/components/schemas/AutoScalePolicyOverride"
+ }
+ }
+ },
+ "description": "Auto split/merge policy override",
+ "required": true
+ },
+ "responses": {
+ "204": {
+ "description": "Override set successfully"
+ },
+ "401": {
+ "description": "Don't have permission to administrate
resources on this tenant"
+ },
+ "403": {
+ "description": "Don't have admin permission on the
namespace"
+ },
+ "404": {
+ "description": "Scalable topic doesn't exist"
+ },
+ "412": {
+ "description": "The resolved auto split/merge policy
violates an invariant"
+ },
+ "500": {
+ "description": "Internal server error"
+ }
+ },
+ "summary": "Set the per-topic auto split/merge policy
override.",
+ "tags": [
+ "scalable topic"
+ ]
+ }
+ },
"/scalable/{tenant}/{namespace}/{topic}/merge/{segmentId1}/{segmentId2}": {
"post": {
"operationId": "mergeSegments",