diff --git a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
index a06ea23..7b6fd92 100644
--- a/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
+++ b/core/api/src/main/java/org/onosproject/net/behaviour/TunnelDescription.java
@@ -185,6 +185,7 @@
         /**
          * Returns tunnel interface description builder with a tunnel key.
          *
+         * @param tunnelKey tunnel key
          * @return tunnel description builder
          */
         Builder key(TunnelKey tunnelKey);
diff --git a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
index d1d280f..26c11b8 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigService.java
@@ -182,6 +182,7 @@
      * Clears the  configuration including queued based on the subject.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      * @param subject           configuration subject
      */
     <S> void removeConfig(S subject);
@@ -190,6 +191,7 @@
      * Clears the complete configuration including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      */
     <S> void removeConfig();
 }
diff --git a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
index 62c3ffa..b3d4ae1 100644
--- a/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
+++ b/core/api/src/main/java/org/onosproject/net/config/NetworkConfigStore.java
@@ -155,6 +155,7 @@
      * Clears the  configuration based on the subject including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      * @param subject   configuration subject
      */
     <S> void clearConfig(S subject);
@@ -163,6 +164,7 @@
      * Clears the complete configuration including queued.
      * If does not exists this call has no effect.
      *
+     * @param <S>               type of subject
      */
     <S> void clearConfig();
 
diff --git a/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java b/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
index a5474f0..b49e439 100644
--- a/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
+++ b/core/api/src/main/java/org/onosproject/net/driver/BehaviourClassResolver.java
@@ -24,7 +24,7 @@
     /**
      * Returns the class corresponding to the specified class name.
      * @param className class className
-     * @return
+     * @return class for the resolver
      */
     Class<? extends Behaviour> getBehaviourClass(String className);
 
diff --git a/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java b/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
index 1511d21..c56abbf 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/FlowEntry.java
@@ -71,6 +71,7 @@
     /**
      * Returns the time this flow rule has been applied.
      *
+     * @param unit time unit the result will be converted to
      * @return time in the requested {@link TimeUnit}
      */
     long life(TimeUnit unit);
diff --git a/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java b/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
index 6a04f83..3b633ac 100644
--- a/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
+++ b/core/api/src/main/java/org/onosproject/net/link/ProbedLinkProvider.java
@@ -36,6 +36,9 @@
     /**
      * Build a stringified MAC address using the ClusterMetadata hash for uniqueness.
      * Form of MAC is "02:eb" followed by four bytes of clusterMetadata hash.
+     *
+     * @param cm cluster metadata
+     * @return stringified mac address
      */
     static String fingerprintMac(ClusterMetadata cm) {
         if (cm == null) {
diff --git a/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java b/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
index 630c845..6bc6261 100644
--- a/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
+++ b/core/api/src/main/java/org/onosproject/net/resource/ResourceConsumerId.java
@@ -94,6 +94,7 @@
     /**
      * Creates ResourceConsumerId from given value and class.
      *
+     * @param <T> resource consumer class type
      * @param value ID value unique within the given class
      * @param cls class of ResourceConsumer implementation
      * @return created ResourceConsumerId object
@@ -105,6 +106,7 @@
     /**
      * Creates ResourceConsumerId instance from Identifier object.
      *
+     * @param <T> resource consumer class type
      * @param id identifier object backed by Long value
      * @return created ResourceConsumerId object
      */
diff --git a/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java b/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
index 7485b1e..8d48d47 100644
--- a/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
+++ b/core/api/src/main/java/org/onosproject/net/utils/ForwardingPort.java
@@ -59,6 +59,9 @@
      * call {@code super.toEqualsBuilder(..)} and append fields.
      * To remove field from comparison, override this method
      * or manually implement equals().
+     *
+     * @param that object to compare to
+     * @return builder object
      */
     protected EqualsBuilder toEqualsBuilder(Port that) {
         if (that == null) {
diff --git a/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java b/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
index 768aa0b..5080b82 100644
--- a/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
+++ b/core/api/src/main/java/org/onosproject/store/primitives/DistributedPrimitiveCreator.java
@@ -80,6 +80,7 @@
     /**
      * Creates a new {@code WorkQueue}.
      *
+     * @param <E> work element type
      * @param name work queue name
      * @param serializer serializer
      * @return work queue
@@ -103,4 +104,4 @@
      * @return set of {@code WorkQueue} names
      */
     Set<String> getWorkQueueNames();
-}
\ No newline at end of file
+}
diff --git a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
index 99d6274..8f35c33 100644
--- a/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
+++ b/core/api/src/main/java/org/onosproject/store/service/AsyncConsistentMultimap.java
@@ -77,6 +77,9 @@
     /**
      * Returns true if this map contains at least one key-value pair with key
      * and value specified.
+     *
+     * @param key key
+     * @param value value
      * @return a future whose value will be true if there is a key-value pair
      * with the specified key and value,
      * false otherwise.
@@ -89,6 +92,7 @@
      * returns true, if the key-value pair already exists then behavior is
      * implementation specific with some implementations allowing duplicates
      * and others ignoring put requests for existing entries.
+     *
      * @param key the key to add
      * @param value the value to add
      * @return a future whose value will be true if the map has changed because
@@ -100,6 +104,7 @@
      * Removes the key-value pair with the specified values if it exists. In
      * implementations that allow duplicates which matching entry will be
      * removed is undefined.
+     *
      * @param key the key of the pair to be removed
      * @param value the value of the pair to be removed
      * @return a future whose value will be true if the map changed because of
@@ -113,6 +118,7 @@
      * will remove one matching entry, which one is not defined. Equivalent to
      * repeated calls to {@code remove()} for each key value pair but more
      * efficient.
+     *
      * @param key the key of the pair to be removed
      * @param values the set of values to be removed
      * @return a future whose value will be true if the map changes because of
@@ -124,6 +130,7 @@
     /**
      * Removes all values associated with the specified key as well as the key
      * itself.
+     *
      * @param key the key whose key-value pairs will be removed
      * @return a future whose value is the set of values that were removed,
      * which may be empty, if the values did not exist the version will be
@@ -136,6 +143,7 @@
      * values in the iterable if each key-value pair does not already exist,
      * if the pair does exist the behavior is implementation specific.
      * (Same as repeated puts but with efficiency gains.)
+     *
      * @param key the key to use for all pairs to be added
      * @param values the set of values to be added in pairs with the key
      * @return a future whose value will be true if any change in the map
@@ -148,6 +156,7 @@
      * Stores all the values in values associated with the key specified,
      * removes all preexisting values and returns a collection of the removed
      * values which may be empty if the entry did not exist.
+     *
      * @param key the key for all entries to be added
      * @param values the values to be associated with the key
      * @return a future whose value will be the collection of removed values,
@@ -158,6 +167,7 @@
 
     /**
      * Removes all key-value pairs, after which it will be empty.
+     *
      * @return a future whose value is irrelevant, simply used to determine if
      * the call has completed
      */
@@ -166,6 +176,7 @@
     /**
      * Returns a collection of values associated with the specified key, if the
      * key is not in the map it will return an empty collection.
+     *
      * @param key the key whose associated values will be returned
      * @return a future whose value will be the collection of the values
      * associated with the specified key, the collection may be empty
@@ -175,6 +186,7 @@
     /**
      * Returns a set of the keys contained in this multimap with one or more
      * associated values.
+     *
      * @return a future whose value will be the collection of all keys with one
      * or more associated values, this may be empty
      */
@@ -184,6 +196,7 @@
      * Returns a multiset of the keys present in this multimap with one or more
      * associated values each. Keys will appear once for each key-value pair
      * in which they participate.
+     *
      * @return a future whose value will be a multiset of the keys, this may
      * be empty
      */
@@ -193,6 +206,7 @@
      * Returns a collection of values in the set with duplicates permitted, the
      * size of this collection will equal the size of the map at the time of
      * creation.
+     *
      * @return a future whose value will be a collection of values, this may be
      * empty
      */
@@ -200,6 +214,7 @@
 
     /**
      * Returns a collection of each key-value pair in this map.
+     *
      * @return a future whose value will be a collection of all entries in the
      * map, this may be empty
      */
@@ -209,6 +224,7 @@
      * Returns a map of keys to collections of values that reflect the set of
      * key-value pairs contained in the multimap, where the key value pairs
      * would be the key paired with each of the values in the collection.
+     *
      * @return a future whose value will be a map of keys to collections of
      * values, the returned map may be empty.
      */
diff --git a/core/api/src/main/java/org/onosproject/store/service/StorageService.java b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
index 53830c2..1e006eb 100644
--- a/core/api/src/main/java/org/onosproject/store/service/StorageService.java
+++ b/core/api/src/main/java/org/onosproject/store/service/StorageService.java
@@ -102,6 +102,8 @@
 
     /**
      * Returns an instance of {@code WorkQueue} with specified name.
+     *
+     * @param <E> work element type
      * @param name work queue name
      * @param serializer serializer
      *
diff --git a/core/api/src/main/java/org/onosproject/store/service/Task.java b/core/api/src/main/java/org/onosproject/store/service/Task.java
index a8ff07b..678c63e 100644
--- a/core/api/src/main/java/org/onosproject/store/service/Task.java
+++ b/core/api/src/main/java/org/onosproject/store/service/Task.java
@@ -61,6 +61,8 @@
 
     /**
      * Maps task from one payload type to another.
+     *
+     * @param <F> future type
      * @param mapper type mapper.
      * @return mapped task.
      */
