ListShadowLinks
Lists all shadow links in the cluster.
Responses
-
Success
Hide response attribute Show response attribute object
-
The shadow links
A ShadowLink resource
Hide shadowLinks attributes Show shadowLinks attributes object
-
ShadowLink options
Additional properties are NOT allowed.
Hide configurations attributes Show configurations attributes object
-
Options for the client link
Additional properties are NOT allowed.
Hide clientOptions attributes Show clientOptions attributes object
-
Additional properties are NOT allowed.
Hide authenticationConfiguration attribute Show authenticationConfiguration attribute object
-
SCRAM settings
Additional properties are NOT allowed.
Hide scramConfiguration attributes Show scramConfiguration attributes object
-
Indicates that the password has been set
-
A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.
All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a 24-hour linear smear.
The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.
# Examples
Example 1: Compute Timestamp from POSIX
time().Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
Example 2: Compute Timestamp from POSIX
gettimeofday().struct timeval tv; gettimeofday(&tv, NULL);
Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000);
Example 3: Compute Timestamp from Win32
GetSystemTimeAsFileTime().FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
Example 4: Compute Timestamp from Java
System.currentTimeMillis().long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build();
Example 5: Compute Timestamp from Java
Instant.now().Instant now = Instant.now();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(now.getEpochSecond()) .setNanos(now.getNano()).build();
Example 6: Compute Timestamp from current time in Python.
timestamp = Timestamp() timestamp.GetCurrentTime()
# JSON Mapping
In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).
For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.
In JavaScript, one can convert a Date object to this format using the standard toISOString() method. In Python, a standard
datetime.datetimeobject can be converted to this format usingstrftimewith the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time'sISODateTimeFormat.dateTime()to obtain a formatter capable of generating timestamps in this format. -
Valid SCRAM mechanisms
Values are
SCRAM_MECHANISM_UNSPECIFIED,SCRAM_MECHANISM_SCRAM_SHA_256, orSCRAM_MECHANISM_SCRAM_SHA_512. -
SCRAM username
-
-
-
The bootstrap servers to use
-
The Client ID for the Kafka RPC requests setn by this cluster to the source cluster
-
Connection timeout. If 0 is provided, defaults to 1 second
-
The effective connection timeout in milliseconds
-
The effective fetch max bytes
-
The effective fetch min bytes
-
The effective fetch partition max bytes
-
The effective fetch wait max in milliseconds
-
The effective metadata max age in milliseconds
-
The effective retry backoff in milliseconds
-
Fetch max bytes. If 0 is provided, defaults to 20 MiB
-
Fetch min bytes. If 0 is provided, defaults to 5 MiB
-
Fetch partition max bytes. If 0 is provided, defaults to 1 MiB
-
Fetch request timeout. If 0 is provided, defaults to 500ms
-
Max metadata age. If 0 is provided, defaults to 10 seconds
-
Retry base backoff. If 0 is provided, defaults to 100ms
-
If provided, this is the expected ID of the source cluster. If it does not match then the connection will be rejected. If provided, this value must match the
ClusterIdfield returned in the Kafka Metadata response message tlsSettings
object TLS settings
One of: TLS settings
Hide attributes Show attributes
-
If true, the SNI hostname will not be provided when TLS is used
-
Whether or not TLS is enabled
-
TLS file settings
Additional properties are NOT allowed.
TLS settings
Hide attributes Show attributes
-
If true, the SNI hostname will not be provided when TLS is used
-
Whether or not TLS is enabled
-
Used when providing the TLS information in PEM format
Additional properties are NOT allowed.
-
-
-
Options for syncing consumer offsets
Additional properties are NOT allowed.
Hide consumerOffsetSyncOptions attributes Show consumerOffsetSyncOptions attributes object
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
The filters
A filter based on the name of a resource
Hide groupFilters attributes Show groupFilters attributes object
-
What type of filter this is, include or exclude
Values are
FILTER_TYPE_UNSPECIFIED,FILTER_TYPE_INCLUDE, orFILTER_TYPE_EXCLUDE. -
The resource name, or "" Note if "", must be the only character and
pattern_typemust bePATTERN_TYPE_LITERAL -
The matching pattern type
Values are
PATTERN_TYPE_UNSPECIFIED,PATTERN_TYPE_LITERAL, orPATTERN_TYPE_PREFIX.
-
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
Allows user to pause the consumer offset sync task. If paused, then the task will enter the 'paused' state and not sync consumer offsets from the source cluster
-
-
Additional properties are NOT allowed.
Hide schemaRegistrySyncOptions attribute Show schemaRegistrySyncOptions attribute object
-
Shadow the entire source cluster's Schema Registry byte-for-byte. If set, the Shadow Link will attempt to add the
_schemastopic to the list of Shadow Topics as long as:- The
_schemastopic exists on the source cluster - The
_schemastopic does not exist on the shadow cluster, or it is empty. If either of the above conditions are not met, then the_schemastopic will not be shadowed by this cluster. Unsetting this flag will not remove the_schemastopic from shadowing if it has already been added. Once made a shadow topic, the_schemastopic will be replicated byte-for-byte. To stop shadowing the_schemastopic, unset this field, then either fail-over the topic or delete it.
Additional properties are NOT allowed.
- The
-
-
Options for syncing security settings
Additional properties are NOT allowed.
Hide securitySyncOptions attributes Show securitySyncOptions attributes object
-
ACL filters
A filter for ACLs
Hide aclFilters attributes Show aclFilters attributes object
-
Filter an ACL based on its access
Additional properties are NOT allowed.
Hide accessFilter attributes Show accessFilter attributes object
-
The host to match. If not set, will default to match all hosts with the specified
operationandpermission_type. Note that the asterisk*is literal and matches hosts that are set to* -
/ The ACL operation to match
Values are
ACL_OPERATION_UNSPECIFIED,ACL_OPERATION_ANY,ACL_OPERATION_READ,ACL_OPERATION_WRITE,ACL_OPERATION_CREATE,ACL_OPERATION_REMOVE,ACL_OPERATION_ALTER,ACL_OPERATION_DESCRIBE,ACL_OPERATION_CLUSTER_ACTION,ACL_OPERATION_DESCRIBE_CONFIGS,ACL_OPERATION_ALTER_CONFIGS, orACL_OPERATION_IDEMPOTENT_WRITE. -
/ ACL permission types
Values are
ACL_PERMISSION_TYPE_UNSPECIFIED,ACL_PERMISSION_TYPE_ANY,ACL_PERMISSION_TYPE_ALLOW, orACL_PERMISSION_TYPE_DENY. -
The name of the principal, if not set will default to match all principals with the specified
operationandpermission_type
-
-
A filter to match ACLs for resources
Additional properties are NOT allowed.
Hide resourceFilter attributes Show resourceFilter attributes object
-
Name, if not given will default to match all items in
resource_type. Note that asterisk*is literal and matches resource ACLs that are named* -
/ The ACL pattern type
Values are
ACL_PATTERN_UNSPECIFIED,ACL_PATTERN_ANY,ACL_PATTERN_LITERAL,ACL_PATTERN_PREFIXED, orACL_PATTERN_MATCH. -
/ The ACL resource types
Values are
ACL_RESOURCE_UNSPECIFIED,ACL_RESOURCE_ANY,ACL_RESOURCE_CLUSTER,ACL_RESOURCE_GROUP,ACL_RESOURCE_TOPIC,ACL_RESOURCE_TXN_ID,ACL_RESOURCE_SR_SUBJECT,ACL_RESOURCE_SR_REGISTRY, orACL_RESOURCE_SR_ANY.
-
-
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
Allows user to pause the security settings sync task. If paused, then the task will enter the 'paused' state and will not sync security settings from the source cluster
-
topicMetadataSyncOptions
object Options for syncing topic metadata
One of: Options for syncing topic metadata
Hide attributes Show attributes
-
List of filters that indicate which topics should be automatically created as shadow topics on the shadow cluster. This only controls automatic creation of shadow topics and does not effect the state of the mirror topic once it is created. Literal filters for _consumer_offsets, _redpanda.audit_log and _schemas will be rejected as well as prefix filters to match topics prefixed with _redpanda or __redpanda. Wildcard
*is permitted only for literal filters and will _not match any topics that start with _redpanda or __redpanda. If users wish to shadow topics that start with _redpanda or __redpanda, they should provide a literal filter for those topics.A filter based on the name of a resource
Hide autoCreateShadowTopicFilters attributes Show autoCreateShadowTopicFilters attributes object
-
What type of filter this is, include or exclude
Values are
FILTER_TYPE_UNSPECIFIED,FILTER_TYPE_INCLUDE, orFILTER_TYPE_EXCLUDE. -
The resource name, or "" Note if "", must be the only character and
pattern_typemust bePATTERN_TYPE_LITERAL -
The matching pattern type
Values are
PATTERN_TYPE_UNSPECIFIED,PATTERN_TYPE_LITERAL, orPATTERN_TYPE_PREFIX.
-
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
If false, then the following topic properties will be synced by default:
compression.typeretention.bytesretention.msdelete.retention.ms- Replication Factor
min.compaction.lag.msmax.compaction.lag.ms
If this is true, then only the properties listed in
synced_shadow_topic_propertieswill be synced. -
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
Allows user to pause the topic sync task. If paused, then the task will enter the 'paused' state and not sync topics or their properties from the source cluster
-
List of topic properties that should be synced from the source topic. The following properties will always be replicated
- Partition count
max.message.bytescleanup.policytimestamp.type
The following properties are not allowed to be replicated and adding them to this list will result in an error:
redpanda.remote.readreplicaredpanda.remote.recoveryredpanda.remote.allowgapsredpanda.virtual.cluster.idredpanda.leaders.preferenceredpanda.cloud_topic.enabled
This list is a list of properties in addition to the default properties that will be synced. See
exclude_default. -
Start at the earliest offset in the partition.
Additional properties are NOT allowed.
Options for syncing topic metadata
Hide attributes Show attributes
-
List of filters that indicate which topics should be automatically created as shadow topics on the shadow cluster. This only controls automatic creation of shadow topics and does not effect the state of the mirror topic once it is created. Literal filters for _consumer_offsets, _redpanda.audit_log and _schemas will be rejected as well as prefix filters to match topics prefixed with _redpanda or __redpanda. Wildcard
*is permitted only for literal filters and will _not match any topics that start with _redpanda or __redpanda. If users wish to shadow topics that start with _redpanda or __redpanda, they should provide a literal filter for those topics.A filter based on the name of a resource
Hide autoCreateShadowTopicFilters attributes Show autoCreateShadowTopicFilters attributes object
-
What type of filter this is, include or exclude
Values are
FILTER_TYPE_UNSPECIFIED,FILTER_TYPE_INCLUDE, orFILTER_TYPE_EXCLUDE. -
The resource name, or "" Note if "", must be the only character and
pattern_typemust bePATTERN_TYPE_LITERAL -
The matching pattern type
Values are
PATTERN_TYPE_UNSPECIFIED,PATTERN_TYPE_LITERAL, orPATTERN_TYPE_PREFIX.
-
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
If false, then the following topic properties will be synced by default:
compression.typeretention.bytesretention.msdelete.retention.ms- Replication Factor
min.compaction.lag.msmax.compaction.lag.ms
If this is true, then only the properties listed in
synced_shadow_topic_propertieswill be synced. -
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
Allows user to pause the topic sync task. If paused, then the task will enter the 'paused' state and not sync topics or their properties from the source cluster
-
List of topic properties that should be synced from the source topic. The following properties will always be replicated
- Partition count
max.message.bytescleanup.policytimestamp.type
The following properties are not allowed to be replicated and adding them to this list will result in an error:
redpanda.remote.readreplicaredpanda.remote.recoveryredpanda.remote.allowgapsredpanda.virtual.cluster.idredpanda.leaders.preferenceredpanda.cloud_topic.enabled
This list is a list of properties in addition to the default properties that will be synced. See
exclude_default. -
Start at the latest offset in the partition.
Additional properties are NOT allowed.
Options for syncing topic metadata
Hide attributes Show attributes
-
List of filters that indicate which topics should be automatically created as shadow topics on the shadow cluster. This only controls automatic creation of shadow topics and does not effect the state of the mirror topic once it is created. Literal filters for _consumer_offsets, _redpanda.audit_log and _schemas will be rejected as well as prefix filters to match topics prefixed with _redpanda or __redpanda. Wildcard
*is permitted only for literal filters and will _not match any topics that start with _redpanda or __redpanda. If users wish to shadow topics that start with _redpanda or __redpanda, they should provide a literal filter for those topics.A filter based on the name of a resource
Hide autoCreateShadowTopicFilters attributes Show autoCreateShadowTopicFilters attributes object
-
What type of filter this is, include or exclude
Values are
FILTER_TYPE_UNSPECIFIED,FILTER_TYPE_INCLUDE, orFILTER_TYPE_EXCLUDE. -
The resource name, or "" Note if "", must be the only character and
pattern_typemust bePATTERN_TYPE_LITERAL -
The matching pattern type
Values are
PATTERN_TYPE_UNSPECIFIED,PATTERN_TYPE_LITERAL, orPATTERN_TYPE_PREFIX.
-
-
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
If false, then the following topic properties will be synced by default:
compression.typeretention.bytesretention.msdelete.retention.ms- Replication Factor
min.compaction.lag.msmax.compaction.lag.ms
If this is true, then only the properties listed in
synced_shadow_topic_propertieswill be synced. -
A Duration represents a signed, fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like "day" or "month". It is related to Timestamp in that the difference between two Timestamp values is a Duration and it can be added or subtracted from a Timestamp. Range is approximately +-10,000 years.
# Examples
Example 1: Compute Duration from two Timestamps in pseudo code.
Timestamp start = ...; Timestamp end = ...; Duration duration = ...;
duration.seconds = end.seconds - start.seconds; duration.nanos = end.nanos - start.nanos;
if (duration.seconds < 0 && duration.nanos > 0) { duration.seconds += 1; duration.nanos -= 1000000000; } else if (duration.seconds > 0 && duration.nanos < 0) { duration.seconds -= 1; duration.nanos += 1000000000; }
Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
Timestamp start = ...; Duration duration = ...; Timestamp end = ...;
end.seconds = start.seconds + duration.seconds; end.nanos = start.nanos + duration.nanos;
if (end.nanos < 0) { end.seconds -= 1; end.nanos += 1000000000; } else if (end.nanos >= 1000000000) { end.seconds += 1; end.nanos -= 1000000000; }
Example 3: Compute Duration from datetime.timedelta in Python.
td = datetime.timedelta(days=3, minutes=10) duration = Duration() duration.FromTimedelta(td)
# JSON Mapping
In JSON format, the Duration type is encoded as a string rather than an object, where the string ends in the suffix "s" (indicating seconds) and is preceded by the number of seconds, with nanoseconds expressed as fractional seconds. For example, 3 seconds with 0 nanoseconds should be encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should be expressed in JSON format as "3.000000001s", and 3 seconds and 1 microsecond should be expressed in JSON format as "3.000001s".
-
Allows user to pause the topic sync task. If paused, then the task will enter the 'paused' state and not sync topics or their properties from the source cluster
-
List of topic properties that should be synced from the source topic. The following properties will always be replicated
- Partition count
max.message.bytescleanup.policytimestamp.type
The following properties are not allowed to be replicated and adding them to this list will result in an error:
redpanda.remote.readreplicaredpanda.remote.recoveryredpanda.remote.allowgapsredpanda.virtual.cluster.idredpanda.leaders.preferenceredpanda.cloud_topic.enabled
This list is a list of properties in addition to the default properties that will be synced. See
exclude_default. -
A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.
All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a 24-hour linear smear.
The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.
# Examples
Example 1: Compute Timestamp from POSIX
time().Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
Example 2: Compute Timestamp from POSIX
gettimeofday().struct timeval tv; gettimeofday(&tv, NULL);
Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000);
Example 3: Compute Timestamp from Win32
GetSystemTimeAsFileTime().FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
Example 4: Compute Timestamp from Java
System.currentTimeMillis().long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build();
Example 5: Compute Timestamp from Java
Instant.now().Instant now = Instant.now();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(now.getEpochSecond()) .setNanos(now.getNano()).build();
Example 6: Compute Timestamp from current time in Python.
timestamp = Timestamp() timestamp.GetCurrentTime()
# JSON Mapping
In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).
For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.
In JavaScript, one can convert a Date object to this format using the standard toISOString() method. In Python, a standard
datetime.datetimeobject can be converted to this format usingstrftimewith the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time'sISODateTimeFormat.dateTime()to obtain a formatter capable of generating timestamps in this format.
-
-
-
The name of the shadow link
-
Status of the shadow link
Additional properties are NOT allowed.
Hide status attributes Show status attributes object
-
Status of shadow topics
A ShadowTopic resource contained by the ShadowLink
Hide shadowTopics attributes Show shadowTopics attributes object
-
Name of the shadow topic
-
The topic ID of the source topic
-
The name of the source topic
-
Status of a ShadowTopic
Additional properties are NOT allowed.
Hide status attributes Show status attributes object
-
List of partition information for the shadow topic
Topic partition information
Hide partitionInformation attributes Show partitionInformation attributes object
-
Shadowed partition's HWM
-
Partition ID
-
Source partition's HWM
-
Source partition's LSO
-
A Timestamp represents a point in time independent of any time zone or local calendar, encoded as a count of seconds and fractions of seconds at nanosecond resolution. The count is relative to an epoch at UTC midnight on January 1, 1970, in the proleptic Gregorian calendar which extends the Gregorian calendar backwards to year one.
All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap second table is needed for interpretation, using a 24-hour linear smear.
The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By restricting to that range, we ensure that we can convert to and from RFC 3339 date strings.
# Examples
Example 1: Compute Timestamp from POSIX
time().Timestamp timestamp; timestamp.set_seconds(time(NULL)); timestamp.set_nanos(0);
Example 2: Compute Timestamp from POSIX
gettimeofday().struct timeval tv; gettimeofday(&tv, NULL);
Timestamp timestamp; timestamp.set_seconds(tv.tv_sec); timestamp.set_nanos(tv.tv_usec * 1000);
Example 3: Compute Timestamp from Win32
GetSystemTimeAsFileTime().FILETIME ft; GetSystemTimeAsFileTime(&ft); UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. Timestamp timestamp; timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
Example 4: Compute Timestamp from Java
System.currentTimeMillis().long millis = System.currentTimeMillis();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) .setNanos((int) ((millis % 1000) * 1000000)).build();
Example 5: Compute Timestamp from Java
Instant.now().Instant now = Instant.now();
Timestamp timestamp = Timestamp.newBuilder().setSeconds(now.getEpochSecond()) .setNanos(now.getNano()).build();
Example 6: Compute Timestamp from current time in Python.
timestamp = Timestamp() timestamp.GetCurrentTime()
# JSON Mapping
In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required. A proto3 JSON serializer should always use UTC (as indicated by "Z") when printing the Timestamp type and a proto3 JSON parser should be able to accept both UTC and other timezones (as indicated by an offset).
For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past 01:30 UTC on January 15, 2017.
In JavaScript, one can convert a Date object to this format using the standard toISOString() method. In Python, a standard
datetime.datetimeobject can be converted to this format usingstrftimewith the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use the Joda Time'sISODateTimeFormat.dateTime()to obtain a formatter capable of generating timestamps in this format.
-
-
State of a shadow topic
Values are
SHADOW_TOPIC_STATE_UNSPECIFIED,SHADOW_TOPIC_STATE_ACTIVE,SHADOW_TOPIC_STATE_FAULTED,SHADOW_TOPIC_STATE_PAUSED,SHADOW_TOPIC_STATE_FAILING_OVER,SHADOW_TOPIC_STATE_FAILED_OVER,SHADOW_TOPIC_STATE_PROMOTING, orSHADOW_TOPIC_STATE_PROMOTED.
-
-
The topic ID of the shadow topic
-
-
State of the shadow link
Values are
SHADOW_LINK_STATE_UNSPECIFIED,SHADOW_LINK_STATE_ACTIVE, orSHADOW_LINK_STATE_PAUSED. -
List of topic properties that are being synced
-
Statuses of the running tasks
Status of a task
Hide taskStatuses attributes Show taskStatuses attributes object
-
The broker the task is running on
-
Name of the task
-
Reason for task being in state
-
The shard the task is running on
-
Task states
Values are
TASK_STATE_UNSPECIFIED,TASK_STATE_ACTIVE,TASK_STATE_PAUSED,TASK_STATE_LINK_UNAVAILABLE,TASK_STATE_NOT_RUNNING, orTASK_STATE_FAULTED.
-
-
-
The UUID of the shadow link
-
-
-
Error
Hide response attributes Show response attributes object
-
The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
Values are
canceled,unknown,invalid_argument,deadline_exceeded,not_found,already_exists,permission_denied,resource_exhausted,failed_precondition,aborted,out_of_range,unimplemented,internal,unavailable,data_loss, orunauthenticated. -
A list of messages that carry the error details. There is no limit on the number of messages.
Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details.
Hide details attributes Show details attributes object
-
Detailed error information.
Additional properties are allowed.
-
A URL that acts as a globally unique identifier for the type of the serialized message. For example:
type.googleapis.com/google.rpc.ErrorInfo. This is used to determine the schema of the data in thevaluefield and is the discriminator for thedebugfield. -
The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the
typefield.
-
-
A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
-
curl \
--request POST 'http://localhost:9644/redpanda.core.admin.v2.ShadowLinkService/ListShadowLinks' \
--header "Content-Type: application/json" \
--header "Connect-Protocol-Version: 1" \
--header "Connect-Timeout-Ms: 42.0"
# Headers
Connect-Protocol-Version: 1
Connect-Timeout-Ms: 42.0
# Payload
{}
{
"shadowLinks": [
{
"configurations": {
"clientOptions": {
"authenticationConfiguration": {
"scramConfiguration": {
"passwordSet": true,
"passwordSetAt": "2023-01-15T01:30:15.01Z",
"scramMechanism": "SCRAM_MECHANISM_UNSPECIFIED",
"username": "string"
}
},
"bootstrapServers": [
"string"
],
"clientId": "string",
"connectionTimeoutMs": 42,
"effectiveConnectionTimeoutMs": 42,
"effectiveFetchMaxBytes": 42,
"effectiveFetchMinBytes": 42,
"effectiveFetchPartitionMaxBytes": 42,
"effectiveFetchWaitMaxMs": 42,
"effectiveMetadataMaxAgeMs": 42,
"effectiveRetryBackoffMs": 42,
"fetchMaxBytes": 42,
"fetchMinBytes": 42,
"fetchPartitionMaxBytes": 42,
"fetchWaitMaxMs": 42,
"metadataMaxAgeMs": 42,
"retryBackoffMs": 42,
"sourceClusterId": "string",
"tlsSettings": {
"doNotSetSniHostname": true,
"enabled": true,
"tlsFileSettings": {
"caPath": "string",
"certPath": "string",
"keyPath": "string"
}
}
},
"consumerOffsetSyncOptions": {
"effectiveInterval": "string",
"groupFilters": [
{
"filterType": "FILTER_TYPE_UNSPECIFIED",
"name": "string",
"patternType": "PATTERN_TYPE_UNSPECIFIED"
}
],
"interval": "string",
"paused": true
},
"schemaRegistrySyncOptions": {
"shadowSchemaRegistryTopic": {}
},
"securitySyncOptions": {
"aclFilters": [
{
"accessFilter": {
"host": "string",
"operation": "ACL_OPERATION_UNSPECIFIED",
"permissionType": "ACL_PERMISSION_TYPE_UNSPECIFIED",
"principal": "string"
},
"resourceFilter": {
"name": "string",
"patternType": "ACL_PATTERN_UNSPECIFIED",
"resourceType": "ACL_RESOURCE_UNSPECIFIED"
}
}
],
"effectiveInterval": "string",
"interval": "string",
"paused": true
},
"topicMetadataSyncOptions": {
"autoCreateShadowTopicFilters": [
{
"filterType": "FILTER_TYPE_UNSPECIFIED",
"name": "string",
"patternType": "PATTERN_TYPE_UNSPECIFIED"
}
],
"effectiveInterval": "string",
"excludeDefault": true,
"interval": "string",
"paused": true,
"syncedShadowTopicProperties": [
"string"
],
"startAtEarliest": {}
}
},
"name": "string",
"status": {
"shadowTopics": [
{
"name": "string",
"sourceTopicId": "string",
"sourceTopicName": "string",
"status": {
"partitionInformation": [
{
"highWatermark": 42,
"partitionId": 42,
"sourceHighWatermark": 42,
"sourceLastStableOffset": 42,
"sourceLastUpdatedTimestamp": "2023-01-15T01:30:15.01Z"
}
],
"state": "SHADOW_TOPIC_STATE_UNSPECIFIED"
},
"topicId": "string"
}
],
"state": "SHADOW_LINK_STATE_UNSPECIFIED",
"syncedShadowTopicProperties": [
"string"
],
"taskStatuses": [
{
"brokerId": 42,
"name": "string",
"reason": "string",
"shard": 42,
"state": "TASK_STATE_UNSPECIFIED"
}
]
},
"uid": "string"
}
]
}
{
"code": "not_found",
"details": [
{
"debug": {},
"type": "string",
"value": "@file"
}
],
"message": "string"
}