diff --git a/libs/core/src/main/java/org/opensearch/OpenSearchException.java b/libs/core/src/main/java/org/opensearch/OpenSearchException.java
index cce86b452f698..dda3983fbb4d1 100644
--- a/libs/core/src/main/java/org/opensearch/OpenSearchException.java
+++ b/libs/core/src/main/java/org/opensearch/OpenSearchException.java
@@ -33,6 +33,7 @@
import org.opensearch.common.CheckedFunction;
import org.opensearch.common.Nullable;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.collect.Tuple;
import org.opensearch.core.ParseField;
import org.opensearch.core.common.Strings;
@@ -69,8 +70,9 @@
/**
* A core library base class for all opensearch exceptions.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class OpenSearchException extends RuntimeException implements Writeable, ToXContentFragment {
protected static final Version UNKNOWN_VERSION_ADDED = Version.fromId(0);
diff --git a/libs/core/src/main/java/org/opensearch/core/common/breaker/CircuitBreaker.java b/libs/core/src/main/java/org/opensearch/core/common/breaker/CircuitBreaker.java
index 846950ff17c63..9a09b3b38a5f2 100644
--- a/libs/core/src/main/java/org/opensearch/core/common/breaker/CircuitBreaker.java
+++ b/libs/core/src/main/java/org/opensearch/core/common/breaker/CircuitBreaker.java
@@ -32,14 +32,17 @@
package org.opensearch.core.common.breaker;
+import org.opensearch.common.annotation.PublicApi;
+
import java.util.Locale;
/**
* Interface for an object that can be incremented, breaking after some
* configured limit has been reached.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface CircuitBreaker {
/**
@@ -72,8 +75,10 @@ public interface CircuitBreaker {
/**
* The type of breaker
* can be {@link #MEMORY}, {@link #PARENT}, or {@link #NOOP}
- * @opensearch.internal
+ *
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
enum Type {
/** A regular or ChildMemoryCircuitBreaker */
MEMORY,
diff --git a/libs/core/src/main/java/org/opensearch/core/common/transport/BoundTransportAddress.java b/libs/core/src/main/java/org/opensearch/core/common/transport/BoundTransportAddress.java
index 8908a172395f2..e2266339c058f 100644
--- a/libs/core/src/main/java/org/opensearch/core/common/transport/BoundTransportAddress.java
+++ b/libs/core/src/main/java/org/opensearch/core/common/transport/BoundTransportAddress.java
@@ -32,6 +32,7 @@
package org.opensearch.core.common.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.network.InetAddresses;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.StreamOutput;
@@ -44,8 +45,9 @@
* the addresses the transport is bound to, and the other is the published one that represents the address clients
* should communicate on.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class BoundTransportAddress implements Writeable {
private TransportAddress[] boundAddresses;
diff --git a/libs/core/src/main/java/org/opensearch/core/transport/TransportResponse.java b/libs/core/src/main/java/org/opensearch/core/transport/TransportResponse.java
index 038069e93a51b..4ae01e140a89c 100644
--- a/libs/core/src/main/java/org/opensearch/core/transport/TransportResponse.java
+++ b/libs/core/src/main/java/org/opensearch/core/transport/TransportResponse.java
@@ -32,6 +32,7 @@
package org.opensearch.core.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.StreamOutput;
@@ -40,8 +41,9 @@
/**
* Response over the transport interface
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public abstract class TransportResponse extends TransportMessage {
/**
diff --git a/libs/core/src/main/java/org/opensearch/semver/SemverRange.java b/libs/core/src/main/java/org/opensearch/semver/SemverRange.java
index da87acc7124aa..da8c06c07d8e5 100644
--- a/libs/core/src/main/java/org/opensearch/semver/SemverRange.java
+++ b/libs/core/src/main/java/org/opensearch/semver/SemverRange.java
@@ -10,6 +10,7 @@
import org.opensearch.Version;
import org.opensearch.common.Nullable;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.xcontent.ToXContentFragment;
import org.opensearch.core.xcontent.XContentBuilder;
import org.opensearch.semver.expr.Caret;
@@ -31,7 +32,10 @@
*
'~' Allows for patch version variability starting from the range version. For example, ~1.2.3 range would match versions greater than or equal to 1.2.3 but less than 1.3.0
* '^' Allows for patch and minor version variability starting from the range version. For example, ^1.2.3 range would match versions greater than or equal to 1.2.3 but less than 2.0.0
*
+ *
+ * @opensearch.api
*/
+@PublicApi(since = "2.13.0")
public class SemverRange implements ToXContentFragment {
private final Version rangeVersion;
diff --git a/server/src/main/java/org/opensearch/action/support/clustermanager/ClusterManagerNodeRequest.java b/server/src/main/java/org/opensearch/action/support/clustermanager/ClusterManagerNodeRequest.java
index a43d6fb0b1e7a..03fc41e829e3d 100644
--- a/server/src/main/java/org/opensearch/action/support/clustermanager/ClusterManagerNodeRequest.java
+++ b/server/src/main/java/org/opensearch/action/support/clustermanager/ClusterManagerNodeRequest.java
@@ -33,6 +33,7 @@
package org.opensearch.action.support.clustermanager;
import org.opensearch.action.ActionRequest;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.StreamOutput;
@@ -42,8 +43,9 @@
/**
* A based request for cluster-manager based operation.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public abstract class ClusterManagerNodeRequest> extends ActionRequest {
public static final TimeValue DEFAULT_CLUSTER_MANAGER_NODE_TIMEOUT = TimeValue.timeValueSeconds(30);
diff --git a/server/src/main/java/org/opensearch/common/cache/RemovalListener.java b/server/src/main/java/org/opensearch/common/cache/RemovalListener.java
index 369313f9f93f4..68e1cdf6139e2 100644
--- a/server/src/main/java/org/opensearch/common/cache/RemovalListener.java
+++ b/server/src/main/java/org/opensearch/common/cache/RemovalListener.java
@@ -32,11 +32,14 @@
package org.opensearch.common.cache;
+import org.opensearch.common.annotation.ExperimentalApi;
+
/**
* Listener for removing an element from the cache
*
- * @opensearch.internal
+ * @opensearch.experimental
*/
+@ExperimentalApi
@FunctionalInterface
public interface RemovalListener {
void onRemoval(RemovalNotification notification);
diff --git a/server/src/main/java/org/opensearch/common/cache/policy/CachedQueryResult.java b/server/src/main/java/org/opensearch/common/cache/policy/CachedQueryResult.java
index 0a98542a05bb7..df698112c60d1 100644
--- a/server/src/main/java/org/opensearch/common/cache/policy/CachedQueryResult.java
+++ b/server/src/main/java/org/opensearch/common/cache/policy/CachedQueryResult.java
@@ -8,6 +8,7 @@
package org.opensearch.common.cache.policy;
+import org.opensearch.common.annotation.ExperimentalApi;
import org.opensearch.core.common.bytes.BytesReference;
import org.opensearch.core.common.io.stream.NamedWriteableAwareStreamInput;
import org.opensearch.core.common.io.stream.NamedWriteableRegistry;
@@ -62,7 +63,10 @@ public void writeToNoId(StreamOutput out) throws IOException {
/**
* A class containing information needed for all cache policies
* to decide whether to admit a given value.
+ *
+ * @opensearch.experimental
*/
+ @ExperimentalApi
public static class PolicyValues implements Writeable {
final long tookTimeNanos;
// More values can be added here as they're needed for future policies
diff --git a/server/src/main/java/org/opensearch/common/cache/serializer/Serializer.java b/server/src/main/java/org/opensearch/common/cache/serializer/Serializer.java
index 35e28707d1ca3..46a8ed5a72ccf 100644
--- a/server/src/main/java/org/opensearch/common/cache/serializer/Serializer.java
+++ b/server/src/main/java/org/opensearch/common/cache/serializer/Serializer.java
@@ -8,10 +8,15 @@
package org.opensearch.common.cache.serializer;
+import org.opensearch.common.annotation.ExperimentalApi;
+
/**
* Defines an interface for serializers, to be used by pluggable caches.
* T is the class of the original object, and U is the serialized class.
+ *
+ * @opensearch.experimental
*/
+@ExperimentalApi
public interface Serializer {
/**
* Serializes an object.
diff --git a/server/src/main/java/org/opensearch/common/lucene/index/OpenSearchDirectoryReader.java b/server/src/main/java/org/opensearch/common/lucene/index/OpenSearchDirectoryReader.java
index f9a87b9e74214..ec2cfde84ca5f 100644
--- a/server/src/main/java/org/opensearch/common/lucene/index/OpenSearchDirectoryReader.java
+++ b/server/src/main/java/org/opensearch/common/lucene/index/OpenSearchDirectoryReader.java
@@ -84,8 +84,10 @@ public DelegatingCacheHelper getDelegatingCacheHelper() {
/**
* Wraps existing IndexReader cache helper which internally provides a way to wrap CacheKey.
- * @opensearch.internal
+ *
+ * @opensearch.api
*/
+ @PublicApi(since = "2.13.0")
public class DelegatingCacheHelper implements CacheHelper {
private final CacheHelper cacheHelper;
private final DelegatingCacheKey serializableCacheKey;
@@ -113,7 +115,10 @@ public void addClosedListener(ClosedListener listener) {
/**
* Wraps internal IndexReader.CacheKey and attaches a uniqueId to it which can be eventually be used instead of
* object itself for serialization purposes.
+ *
+ * @opensearch.api
*/
+ @PublicApi(since = "2.13.0")
public class DelegatingCacheKey {
private final CacheKey cacheKey;
private final String uniqueId;
diff --git a/server/src/main/java/org/opensearch/common/metrics/MeanMetric.java b/server/src/main/java/org/opensearch/common/metrics/MeanMetric.java
index 359facdce633b..94d44d5b35d74 100644
--- a/server/src/main/java/org/opensearch/common/metrics/MeanMetric.java
+++ b/server/src/main/java/org/opensearch/common/metrics/MeanMetric.java
@@ -32,13 +32,16 @@
package org.opensearch.common.metrics;
+import org.opensearch.common.annotation.PublicApi;
+
import java.util.concurrent.atomic.LongAdder;
/**
* An average metric for tracking.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class MeanMetric implements Metric {
private final LongAdder counter = new LongAdder();
diff --git a/server/src/main/java/org/opensearch/http/HttpInfo.java b/server/src/main/java/org/opensearch/http/HttpInfo.java
index 10f2d50dacb14..4a39e40c471b1 100644
--- a/server/src/main/java/org/opensearch/http/HttpInfo.java
+++ b/server/src/main/java/org/opensearch/http/HttpInfo.java
@@ -32,6 +32,7 @@
package org.opensearch.http;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.network.InetAddresses;
import org.opensearch.core.common.io.stream.StreamInput;
@@ -47,8 +48,9 @@
/**
* Information about an http connection
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class HttpInfo implements ReportingService.Info {
private static final DeprecationLogger deprecationLogger = DeprecationLogger.getLogger(HttpInfo.class);
diff --git a/server/src/main/java/org/opensearch/http/HttpServerTransport.java b/server/src/main/java/org/opensearch/http/HttpServerTransport.java
index 890136cb67e60..012b69c29c1d4 100644
--- a/server/src/main/java/org/opensearch/http/HttpServerTransport.java
+++ b/server/src/main/java/org/opensearch/http/HttpServerTransport.java
@@ -32,6 +32,7 @@
package org.opensearch.http;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.lifecycle.LifecycleComponent;
import org.opensearch.common.util.concurrent.ThreadContext;
import org.opensearch.core.common.transport.BoundTransportAddress;
@@ -42,8 +43,9 @@
/**
* HTTP Transport server
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface HttpServerTransport extends LifecycleComponent, ReportingService {
String HTTP_SERVER_WORKER_THREAD_NAME_PREFIX = "http_server_worker";
diff --git a/server/src/main/java/org/opensearch/http/HttpStats.java b/server/src/main/java/org/opensearch/http/HttpStats.java
index 078b84b7bc563..f69eff59e830d 100644
--- a/server/src/main/java/org/opensearch/http/HttpStats.java
+++ b/server/src/main/java/org/opensearch/http/HttpStats.java
@@ -32,6 +32,7 @@
package org.opensearch.http;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.StreamOutput;
import org.opensearch.core.common.io.stream.Writeable;
@@ -43,8 +44,9 @@
/**
* Stats for HTTP connections
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class HttpStats implements Writeable, ToXContentFragment {
private final long serverOpen;
diff --git a/server/src/main/java/org/opensearch/index/codec/fuzzy/LongArrayBackedBitSet.java b/server/src/main/java/org/opensearch/index/codec/fuzzy/LongArrayBackedBitSet.java
index bd4936aeec366..392a925c21143 100644
--- a/server/src/main/java/org/opensearch/index/codec/fuzzy/LongArrayBackedBitSet.java
+++ b/server/src/main/java/org/opensearch/index/codec/fuzzy/LongArrayBackedBitSet.java
@@ -39,7 +39,7 @@ class LongArrayBackedBitSet implements Accountable, Closeable {
/**
* Constructor which uses Lucene's IndexInput to read the bitset into a read-only buffer.
* @param in IndexInput containing the serialized bitset.
- * @throws IOException
+ * @throws IOException I/O exception
*/
LongArrayBackedBitSet(IndexInput in) throws IOException {
underlyingArrayLength = in.readLong();
diff --git a/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java b/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java
index eca8d9ec702e1..d6d3f1fca833c 100644
--- a/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java
+++ b/server/src/main/java/org/opensearch/index/store/RemoteSegmentStoreDirectoryFactory.java
@@ -9,6 +9,7 @@
package org.opensearch.index.store;
import org.apache.lucene.store.Directory;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.blobstore.BlobPath;
import org.opensearch.core.index.shard.ShardId;
import org.opensearch.index.IndexSettings;
@@ -28,8 +29,9 @@
/**
* Factory for a remote store directory
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "2.3.0")
public class RemoteSegmentStoreDirectoryFactory implements IndexStorePlugin.DirectoryFactory {
private static final String SEGMENTS = "segments";
diff --git a/server/src/main/java/org/opensearch/rest/BaseRestHandler.java b/server/src/main/java/org/opensearch/rest/BaseRestHandler.java
index e18a594236fc8..3552e32022b2c 100644
--- a/server/src/main/java/org/opensearch/rest/BaseRestHandler.java
+++ b/server/src/main/java/org/opensearch/rest/BaseRestHandler.java
@@ -40,6 +40,7 @@
import org.opensearch.action.support.clustermanager.ClusterManagerNodeRequest;
import org.opensearch.client.node.NodeClient;
import org.opensearch.common.CheckedConsumer;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.collect.Tuple;
import org.opensearch.common.logging.DeprecationLogger;
import org.opensearch.common.settings.Setting;
@@ -73,6 +74,7 @@
*
* @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public abstract class BaseRestHandler implements RestHandler {
public static final Setting MULTI_ALLOW_EXPLICIT_INDEX = Setting.boolSetting(
@@ -195,8 +197,11 @@ protected final String unrecognized(
/**
* REST requests are handled by preparing a channel consumer that represents the execution of
* the request against a channel.
+ *
+ * @opensearch.api
*/
@FunctionalInterface
+ @PublicApi(since = "1.0.0")
protected interface RestChannelConsumer extends CheckedConsumer {}
/**
diff --git a/server/src/main/java/org/opensearch/rest/RestChannel.java b/server/src/main/java/org/opensearch/rest/RestChannel.java
index b8ce3e92e0098..b3ded1389f754 100644
--- a/server/src/main/java/org/opensearch/rest/RestChannel.java
+++ b/server/src/main/java/org/opensearch/rest/RestChannel.java
@@ -33,6 +33,7 @@
package org.opensearch.rest;
import org.opensearch.common.Nullable;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.io.stream.BytesStreamOutput;
import org.opensearch.core.xcontent.MediaType;
import org.opensearch.core.xcontent.XContentBuilder;
@@ -44,6 +45,7 @@
*
* @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface RestChannel {
XContentBuilder newBuilder() throws IOException;
diff --git a/server/src/main/java/org/opensearch/rest/RestHandler.java b/server/src/main/java/org/opensearch/rest/RestHandler.java
index 294dc3ffbe329..387e8b25a8274 100644
--- a/server/src/main/java/org/opensearch/rest/RestHandler.java
+++ b/server/src/main/java/org/opensearch/rest/RestHandler.java
@@ -33,6 +33,7 @@
package org.opensearch.rest;
import org.opensearch.client.node.NodeClient;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.xcontent.XContent;
import org.opensearch.rest.RestRequest.Method;
@@ -180,8 +181,9 @@ public boolean allowSystemIndexAccessByDefault() {
/**
* Route for the request.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
class Route {
protected final String path;
diff --git a/server/src/main/java/org/opensearch/rest/RestResponse.java b/server/src/main/java/org/opensearch/rest/RestResponse.java
index 2eff746e8508c..482eb6b052e9b 100644
--- a/server/src/main/java/org/opensearch/rest/RestResponse.java
+++ b/server/src/main/java/org/opensearch/rest/RestResponse.java
@@ -33,6 +33,7 @@
package org.opensearch.rest;
import org.opensearch.OpenSearchException;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.lease.Releasable;
import org.opensearch.core.common.bytes.BytesReference;
import org.opensearch.core.rest.RestStatus;
@@ -49,6 +50,7 @@
*
* @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public abstract class RestResponse {
private Map> customHeaders;
diff --git a/server/src/main/java/org/opensearch/transport/ConnectionProfile.java b/server/src/main/java/org/opensearch/transport/ConnectionProfile.java
index b9764c0c53f4a..931707e4a1cdc 100644
--- a/server/src/main/java/org/opensearch/transport/ConnectionProfile.java
+++ b/server/src/main/java/org/opensearch/transport/ConnectionProfile.java
@@ -33,6 +33,7 @@
import org.opensearch.cluster.node.DiscoveryNode;
import org.opensearch.common.Nullable;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.settings.Settings;
import org.opensearch.common.unit.TimeValue;
@@ -49,8 +50,9 @@
* A connection profile describes how many connection are established to specific node for each of the available request types.
* ({@link org.opensearch.transport.TransportRequestOptions.Type}). This allows to tailor a connection towards a specific usage.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public final class ConnectionProfile {
/**
diff --git a/server/src/main/java/org/opensearch/transport/Header.java b/server/src/main/java/org/opensearch/transport/Header.java
index a179cfb35288e..57c1da6f46aec 100644
--- a/server/src/main/java/org/opensearch/transport/Header.java
+++ b/server/src/main/java/org/opensearch/transport/Header.java
@@ -33,6 +33,7 @@
package org.opensearch.transport;
import org.opensearch.Version;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.collect.Tuple;
import org.opensearch.common.util.concurrent.ThreadContext;
import org.opensearch.core.common.io.stream.StreamInput;
@@ -47,8 +48,9 @@
/**
* Transport Header
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class Header {
private static final String RESPONSE_NAME = "NO_ACTION_NAME_FOR_RESPONSES";
diff --git a/server/src/main/java/org/opensearch/transport/InboundMessage.java b/server/src/main/java/org/opensearch/transport/InboundMessage.java
index a1ed682ff7d7f..71c4d6973505d 100644
--- a/server/src/main/java/org/opensearch/transport/InboundMessage.java
+++ b/server/src/main/java/org/opensearch/transport/InboundMessage.java
@@ -32,6 +32,7 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.bytes.ReleasableBytesReference;
import org.opensearch.common.lease.Releasable;
import org.opensearch.common.lease.Releasables;
@@ -43,8 +44,9 @@
/**
* Inbound data as a message
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class InboundMessage implements Releasable {
private final Header header;
diff --git a/server/src/main/java/org/opensearch/transport/RequestHandlerRegistry.java b/server/src/main/java/org/opensearch/transport/RequestHandlerRegistry.java
index 98c182c562928..4368dbdece6cf 100644
--- a/server/src/main/java/org/opensearch/transport/RequestHandlerRegistry.java
+++ b/server/src/main/java/org/opensearch/transport/RequestHandlerRegistry.java
@@ -32,6 +32,7 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.lease.Releasable;
import org.opensearch.common.lease.Releasables;
import org.opensearch.common.util.concurrent.ThreadContext;
@@ -47,8 +48,9 @@
/**
* Registry for OpenSearch RequestHandlers
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public final class RequestHandlerRegistry {
private final String action;
diff --git a/server/src/main/java/org/opensearch/transport/StatsTracker.java b/server/src/main/java/org/opensearch/transport/StatsTracker.java
index 5548d2d558ae2..02bc0a51c9330 100644
--- a/server/src/main/java/org/opensearch/transport/StatsTracker.java
+++ b/server/src/main/java/org/opensearch/transport/StatsTracker.java
@@ -32,6 +32,7 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.metrics.MeanMetric;
import java.util.concurrent.atomic.LongAdder;
@@ -39,8 +40,9 @@
/**
* Tracks transport statistics
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public final class StatsTracker {
private final LongAdder bytesRead = new LongAdder();
diff --git a/server/src/main/java/org/opensearch/transport/TcpChannel.java b/server/src/main/java/org/opensearch/transport/TcpChannel.java
index f98b65d0a4df1..7d4515de85d80 100644
--- a/server/src/main/java/org/opensearch/transport/TcpChannel.java
+++ b/server/src/main/java/org/opensearch/transport/TcpChannel.java
@@ -32,6 +32,7 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.network.CloseableChannel;
import org.opensearch.common.unit.TimeValue;
import org.opensearch.core.action.ActionListener;
@@ -45,8 +46,9 @@
* abstraction used by the {@link TcpTransport} and {@link TransportService}. All tcp transport
* implementations must return channels that adhere to the required method contracts.
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface TcpChannel extends CloseableChannel {
/**
@@ -114,8 +116,9 @@ default Optional get(String name, Class clazz) {
/**
* Channel statistics
*
- * @opensearch.internal
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
class ChannelStats {
private volatile long lastAccessedTime;
diff --git a/server/src/main/java/org/opensearch/transport/TcpTransport.java b/server/src/main/java/org/opensearch/transport/TcpTransport.java
index d0e6516973382..7d45152089f37 100644
--- a/server/src/main/java/org/opensearch/transport/TcpTransport.java
+++ b/server/src/main/java/org/opensearch/transport/TcpTransport.java
@@ -39,6 +39,7 @@
import org.opensearch.action.support.ThreadedActionListener;
import org.opensearch.cluster.node.DiscoveryNode;
import org.opensearch.common.Booleans;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.common.lifecycle.AbstractLifecycleComponent;
import org.opensearch.common.lifecycle.Lifecycle;
import org.opensearch.common.metrics.MeanMetric;
@@ -111,8 +112,9 @@
/**
* The TCP Transport layer
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public abstract class TcpTransport extends AbstractLifecycleComponent implements Transport {
private static final Logger logger = LogManager.getLogger(TcpTransport.class);
@@ -966,7 +968,10 @@ public static Set getProfileSettings(Settings settings) {
/**
* Representation of a transport profile settings for a {@code transport.profiles.$profilename.*}
+ *
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
public static final class ProfileSettings {
public final String profileName;
public final boolean tcpNoDelay;
diff --git a/server/src/main/java/org/opensearch/transport/Transport.java b/server/src/main/java/org/opensearch/transport/Transport.java
index 8abedff37db14..b89393615c95f 100644
--- a/server/src/main/java/org/opensearch/transport/Transport.java
+++ b/server/src/main/java/org/opensearch/transport/Transport.java
@@ -58,8 +58,9 @@
/**
* OpenSearch Transport Interface
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface Transport extends LifecycleComponent {
/**
@@ -166,7 +167,10 @@ default Object getCacheKey() {
/**
* This class represents a response context that encapsulates the actual response handler, the action and the connection it was
* executed on.
+ *
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
final class ResponseContext {
private final TransportResponseHandler handler;
@@ -196,7 +200,10 @@ public String action() {
/**
* This class is a registry that allows
+ *
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
final class ResponseHandlers {
private final ConcurrentMapLong> handlers = ConcurrentCollections
.newConcurrentMapLongWithAggressiveConcurrency();
@@ -276,8 +283,9 @@ public TransportResponseHandler extends TransportResponse> onResponseReceived(
/**
* Request handler implementations
*
- * @opensearch.internal
+ * @opensearch.api
*/
+ @PublicApi(since = "1.0.0")
final class RequestHandlers {
private volatile Map> requestHandlers = Collections.emptyMap();
diff --git a/server/src/main/java/org/opensearch/transport/TransportChannel.java b/server/src/main/java/org/opensearch/transport/TransportChannel.java
index f84ee5dc745c3..7b6715ff2c73d 100644
--- a/server/src/main/java/org/opensearch/transport/TransportChannel.java
+++ b/server/src/main/java/org/opensearch/transport/TransportChannel.java
@@ -36,6 +36,7 @@
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.message.ParameterizedMessage;
import org.opensearch.Version;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.transport.TransportResponse;
import java.io.IOException;
@@ -46,6 +47,7 @@
*
* @opensearch.internal
*/
+@PublicApi(since = "1.0.0")
public interface TransportChannel {
Logger logger = LogManager.getLogger(TransportChannel.class);
diff --git a/server/src/main/java/org/opensearch/transport/TransportMessageListener.java b/server/src/main/java/org/opensearch/transport/TransportMessageListener.java
index dfcd7acce3706..284c4646655c5 100644
--- a/server/src/main/java/org/opensearch/transport/TransportMessageListener.java
+++ b/server/src/main/java/org/opensearch/transport/TransportMessageListener.java
@@ -32,13 +32,15 @@
package org.opensearch.transport;
import org.opensearch.cluster.node.DiscoveryNode;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.transport.TransportResponse;
/**
* Listens for transport messages
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface TransportMessageListener {
TransportMessageListener NOOP_LISTENER = new TransportMessageListener() {
diff --git a/server/src/main/java/org/opensearch/transport/TransportRequestHandler.java b/server/src/main/java/org/opensearch/transport/TransportRequestHandler.java
index 54ee1b68fc9aa..0419c0b82029b 100644
--- a/server/src/main/java/org/opensearch/transport/TransportRequestHandler.java
+++ b/server/src/main/java/org/opensearch/transport/TransportRequestHandler.java
@@ -32,13 +32,15 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.tasks.Task;
/**
* Handles transport requests
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface TransportRequestHandler {
void messageReceived(T request, TransportChannel channel, Task task) throws Exception;
diff --git a/server/src/main/java/org/opensearch/transport/TransportResponseHandler.java b/server/src/main/java/org/opensearch/transport/TransportResponseHandler.java
index 8992af18edb48..748d2a4d867ec 100644
--- a/server/src/main/java/org/opensearch/transport/TransportResponseHandler.java
+++ b/server/src/main/java/org/opensearch/transport/TransportResponseHandler.java
@@ -32,6 +32,7 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.Writeable;
import org.opensearch.core.transport.TransportResponse;
@@ -42,8 +43,9 @@
/**
* Handles transport responses
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public interface TransportResponseHandler extends Writeable.Reader {
void handleResponse(T response);
diff --git a/server/src/main/java/org/opensearch/transport/TransportStats.java b/server/src/main/java/org/opensearch/transport/TransportStats.java
index e3c4773f4a472..01980ce529caa 100644
--- a/server/src/main/java/org/opensearch/transport/TransportStats.java
+++ b/server/src/main/java/org/opensearch/transport/TransportStats.java
@@ -32,6 +32,7 @@
package org.opensearch.transport;
+import org.opensearch.common.annotation.PublicApi;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.StreamOutput;
import org.opensearch.core.common.io.stream.Writeable;
@@ -44,8 +45,9 @@
/**
* Stats for transport activity
*
- * @opensearch.internal
+ * @opensearch.api
*/
+@PublicApi(since = "1.0.0")
public class TransportStats implements Writeable, ToXContentFragment {
private final long serverOpen;