diff --git a/core/server/prometheus-metrics.js b/core/server/prometheus-metrics.js
index 69748f52cb19f5bd23381febf1b04520e2ba3c59..e472a0232969f57ac1c71b46e749105341391fa8 100644
--- a/core/server/prometheus-metrics.js
+++ b/core/server/prometheus-metrics.js
@@ -95,6 +95,10 @@ module.exports = class PrometheusMetrics {
   }
 
   /**
+   * @param {object} attrs Refer to individual attrs
+   * @param {string} attrs.category e.g: 'build'
+   * @param {string} attrs.serviceFamily e.g: 'npm'
+   * @param {string} attrs.name e.g: 'NpmVersion'
    * @returns {object} `{ inc() {} }`.
    */
   createNumRequestCounter({ category, serviceFamily, name }) {
diff --git a/core/service-test-runner/service-tester.js b/core/service-test-runner/service-tester.js
index a6ab4ec0bc06e48fa1e8a3d87dc1e5b4746d3622..a8130b7738e9a6b7b3ee8400d7456ed9c0817ea8 100644
--- a/core/service-test-runner/service-tester.js
+++ b/core/service-test-runner/service-tester.js
@@ -25,7 +25,7 @@ class ServiceTester {
    *    Specifies which tests to run from the CLI or pull requests
    * @param {string} attrs.title
    *    Prints in the Mocha output
-   * @param {string} attrs.path
+   * @param {string} attrs.pathPrefix
    *    Prefix which is automatically prepended to each tested URI.
    *    The default is `/${attrs.id}`.
    */
@@ -119,7 +119,7 @@ class ServiceTester {
    * @param {number} attrs.retry.count number of times to retry test
    * @param {number} attrs.retry.backoff number of milliseconds to add to the wait between each retry
    */
-  toss({ baseUrl, skipIntercepted, retry }) {
+  toss({ baseUrl, skipIntercepted, retry: { count, backoff } }) {
     const { specs, pathPrefix } = this
     const testerBaseUrl = `${baseUrl}${pathPrefix}`
 
@@ -132,7 +132,7 @@ class ServiceTester {
         }`
         if (!skipIntercepted || !spec.intercepted) {
           spec.baseUri(testerBaseUrl)
-          spec.retry(retry.count, retry.backoff)
+          spec.retry(count, backoff)
           spec.toss()
         }
       })
diff --git a/package-lock.json b/package-lock.json
index e4fcbea386642c0375e17fe273f2be1d5202ceae..ab2888fccecb90667cc2ba4d1c60f5bc748db958 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11795,16 +11795,16 @@
       }
     },
     "eslint-plugin-jsdoc": {
-      "version": "24.0.6",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-24.0.6.tgz",
-      "integrity": "sha512-WDzUgShMK7Zg9N6s19LxUqy71At/PxCuMEXaKyBzybhABq6iU4DaZtWZ+4fkCMBvMzMwMAPa2oRD/+fQGORMhg==",
+      "version": "25.4.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-25.4.1.tgz",
+      "integrity": "sha512-EixCLTv36/etbr5GGC89n0GLDkU/5NmadPzI3x6gSzldqrZpyQVh6qqN3jarWdfTvJsimorP4KNCIwe5mk/7TA==",
       "dev": true,
       "requires": {
         "comment-parser": "^0.7.4",
         "debug": "^4.1.1",
         "jsdoctypeparser": "^6.1.0",
         "lodash": "^4.17.15",
-        "regextras": "^0.7.0",
+        "regextras": "^0.7.1",
         "semver": "^6.3.0",
         "spdx-expression-parse": "^3.0.0"
       },
@@ -11831,9 +11831,9 @@
           "dev": true
         },
         "spdx-expression-parse": {
-          "version": "3.0.0",
-          "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
-          "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+          "version": "3.0.1",
+          "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+          "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
           "dev": true,
           "requires": {
             "spdx-exceptions": "^2.1.0",
@@ -26397,9 +26397,9 @@
       }
     },
     "regextras": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.0.tgz",
-      "integrity": "sha512-ds+fL+Vhl918gbAUb0k2gVKbTZLsg84Re3DI6p85Et0U0tYME3hyW4nMK8Px4dtDaBA2qNjvG5uWyW7eK5gfmw==",
+      "version": "0.7.1",
+      "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz",
+      "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==",
       "dev": true
     },
     "registry-auth-token": {
diff --git a/package.json b/package.json
index 9dc432b3ee649ec5671b1b7f32bedfae7fd2cb60..260700b8199a228fe09ec9f4aeccbf3b21c99fb2 100644
--- a/package.json
+++ b/package.json
@@ -182,7 +182,7 @@
     "eslint-plugin-chai-friendly": "^0.6.0",
     "eslint-plugin-cypress": "^2.10.3",
     "eslint-plugin-import": "^2.20.2",
-    "eslint-plugin-jsdoc": "^24.0.6",
+    "eslint-plugin-jsdoc": "^25.4.1",
     "eslint-plugin-mocha": "^6.3.0",
     "eslint-plugin-no-extension-in-require": "^0.2.0",
     "eslint-plugin-node": "^11.1.0",
diff --git a/services/packagist/packagist-base.js b/services/packagist/packagist-base.js
index 07cddd86197c0071008b76f7d966ea652f34c38b..7cc0dfb8fada01ae3902404a5dee20c428c1262b 100644
--- a/services/packagist/packagist-base.js
+++ b/services/packagist/packagist-base.js
@@ -29,6 +29,11 @@ class BasePackagistService extends BaseJsonService {
    * and dumped to static files so it is very efficient on our end." (comment from official documentation).
    * For more information please refer to https://packagist.org/apidoc#get-package-data.
    *
+   * @param {object} attrs Refer to individual attrs
+   * @param {string} attrs.user package user
+   * @param {string} attrs.repo package repository
+   * @param {Joi} attrs.schema Joi schema to validate the response transformed to JSON
+   * @param {string} attrs.server URL for the packagist registry server (Optional)
    * @returns {object} Parsed response
    */
   async fetch({ user, repo, schema, server = 'https://packagist.org' }) {
@@ -48,6 +53,11 @@ class BasePackagistService extends BaseJsonService {
    * so data fetch from this method might be outdated.
    * For more information please refer to https://packagist.org/apidoc#get-package-data.
    *
+   * @param {object} attrs Refer to individual attrs
+   * @param {string} attrs.user package user
+   * @param {string} attrs.repo package repository
+   * @param {Joi} attrs.schema Joi schema to validate the response transformed to JSON
+   * @param {string} attrs.server URL for the packagist registry server (Optional)
    * @returns {object} Parsed response
    */
   async fetchByJsonAPI({