{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "javadocs.dev API",
    "version" : "0.0.2"
  },
  "paths" : {
    "/api/javadoc-index" : {
      "description" : "Fetches the rendered Javadoc/Scaladoc index page for a specific Maven Central artifact version, converted to plain text/markdown. Useful for orienting yourself in an unfamiliar library: it lists the top-level packages, modules, and (for Scaladoc) often a curated overview. Use this before drilling into specific symbols. Works against the live Maven Central catalog — you do not need to download the javadoc jar.\n\n",
      "get" : {
        "description" : "Fetches the rendered Javadoc/Scaladoc index page for a specific Maven Central artifact version, converted to plain text/markdown. Useful for orienting yourself in an unfamiliar library: it lists the top-level packages, modules, and (for Scaladoc) often a curated overview. Use this before drilling into specific symbols. Works against the live Maven Central catalog — you do not need to download the javadoc jar.\n\n",
        "parameters" : [
          {
            "name" : "groupId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "artifactId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "version",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/javadoc-symbol" : {
      "description" : "Reads one Javadoc/Scaladoc page from a Maven Central artifact, already converted to plain text/markdown so you don't have to parse HTML. Pass the `link` value returned by list_javadoc_symbols. Use this when you need to know what a class, method, or field does and what its parameters mean for any library on Maven Central — without downloading or unzipping the javadoc jar yourself.\n\n",
      "get" : {
        "description" : "Reads one Javadoc/Scaladoc page from a Maven Central artifact, already converted to plain text/markdown so you don't have to parse HTML. Pass the `link` value returned by list_javadoc_symbols. Use this when you need to know what a class, method, or field does and what its parameters mean for any library on Maven Central — without downloading or unzipping the javadoc jar yourself.\n\n",
        "parameters" : [
          {
            "name" : "groupId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "artifactId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "version",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "link",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/latest-version" : {
      "description" : "Resolves the latest published version of a Maven Central artifact (any groupId:artifactId — Java, Kotlin, or Scala library). Call this first when you only know the artifact but not the version: the version it returns feeds into every other tool here that takes a concrete version. By default it returns the latest release, sorted by Maven version order and skipping pre-releases; set `includePreReleases` to true to get the newest version of any kind (milestone, RC, beta...), e.g. when a class or method you are looking for is missing from the latest release. Works against the live Maven Central catalog — no local install, build tool, or repository checkout required.\n\n",
      "get" : {
        "description" : "Resolves the latest published version of a Maven Central artifact (any groupId:artifactId — Java, Kotlin, or Scala library). Call this first when you only know the artifact but not the version: the version it returns feeds into every other tool here that takes a concrete version. By default it returns the latest release, sorted by Maven version order and skipping pre-releases; set `includePreReleases` to true to get the newest version of any kind (milestone, RC, beta...), e.g. when a class or method you are looking for is missing from the latest release. Works against the live Maven Central catalog — no local install, build tool, or repository checkout required.\n\n",
        "parameters" : [
          {
            "name" : "groupId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "artifactId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "includePreReleases",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "boolean"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/list-javadoc-symbols" : {
      "description" : "Enumerates the public API a library documents — classes, interfaces, traits, objects, enums, and annotations — for a Maven Central artifact version. Each entry includes the fully-qualified class name (`fqn`) and a `link` that can be passed to get_javadoc_symbol to read the rendered API documentation. Use this to answer 'which classes/types does library X have?' or 'find classes related to <topic>' — it is the fastest way to list the API by name without reading code. Prefer this over list_source_files whenever you only need class/type names. Pass `filter` (e.g. a class name) to get only the matching entries: large libraries list hundreds of symbols, so filtering saves a lot of context when you are looking for one type. Only if this returns NotFoundError because no javadoc jar was published, fall back to list_source_files. Works against the live Maven Central catalog with no local install, build, or checkout required.\n\n",
      "get" : {
        "description" : "Enumerates the public API a library documents — classes, interfaces, traits, objects, enums, and annotations — for a Maven Central artifact version. Each entry includes the fully-qualified class name (`fqn`) and a `link` that can be passed to get_javadoc_symbol to read the rendered API documentation. Use this to answer 'which classes/types does library X have?' or 'find classes related to <topic>' — it is the fastest way to list the API by name without reading code. Prefer this over list_source_files whenever you only need class/type names. Pass `filter` (e.g. a class name) to get only the matching entries: large libraries list hundreds of symbols, so filtering saves a lot of context when you are looking for one type. Only if this returns NotFoundError because no javadoc jar was published, fall back to list_source_files. Works against the live Maven Central catalog with no local install, build, or checkout required.\n\n",
        "parameters" : [
          {
            "name" : "groupId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "artifactId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "version",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "filter",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Content"
                  },
                  "uniqueItems" : true
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/list-source-files" : {
      "description" : "Lists the raw source files (`.java`, `.kt`, and `.scala`) in a Maven Central artifact version's `-sources.jar`. Each returned path can be passed to get_source_file to read the actual source code. Use this only when you need the implementation — for example, to trace behavior or see how something is wired. To discover which classes exist, or to find classes by topic or name, use list_javadoc_symbols instead; do not use this tool just to enumerate classes. Works against the live Maven Central catalog with no local install, build, or checkout required.\n\n",
      "get" : {
        "description" : "Lists the raw source files (`.java`, `.kt`, and `.scala`) in a Maven Central artifact version's `-sources.jar`. Each returned path can be passed to get_source_file to read the actual source code. Use this only when you need the implementation — for example, to trace behavior or see how something is wired. To discover which classes exist, or to find classes by topic or name, use list_javadoc_symbols instead; do not use this tool just to enumerate classes. Works against the live Maven Central catalog with no local install, build, or checkout required.\n\n",
        "parameters" : [
          {
            "name" : "groupId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "artifactId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "version",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "type" : "string"
                  },
                  "uniqueItems" : true
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/search-artifacts" : {
      "description" : "Finds Maven coordinates from part of a library name: searches the javadocs.dev index of Maven Central artifacts for groupId:artifactId values containing every word of the query (case-insensitive). Use this when you know part of a library name (e.g. \"jackson\", \"zio-http\", \"netty-codec\") and need the exact groupId:artifactId coordinates to feed into the other tools. Query with name fragments only — versions are not part of the match. The same artifactId can be published under several groupIds (e.g. jackson-databind: com.fasterxml.jackson.core for 2.x, tools.jackson.core for 3.x), so check each candidate with get_latest_version. To find the library that contains a class, use symbol_to_artifact instead.\n\n",
      "get" : {
        "description" : "Finds Maven coordinates from part of a library name: searches the javadocs.dev index of Maven Central artifacts for groupId:artifactId values containing every word of the query (case-insensitive). Use this when you know part of a library name (e.g. \"jackson\", \"zio-http\", \"netty-codec\") and need the exact groupId:artifactId coordinates to feed into the other tools. Query with name fragments only — versions are not part of the match. The same artifactId can be published under several groupIds (e.g. jackson-databind: com.fasterxml.jackson.core for 2.x, tools.jackson.core for 3.x), so check each candidate with get_latest_version. To find the library that contains a class, use symbol_to_artifact instead.\n\n",
        "parameters" : [
          {
            "name" : "query",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/GroupArtifact"
                  },
                  "uniqueItems" : true
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/source-file" : {
      "description" : "Reads one source file from a Maven Central library's sources jar (the `-sources.jar` artifact). Pass the `link` value returned by list_source_files. Use this whenever you need the exact source text of a JVM library — tracing behavior into a dependency, confirming a public API's implementation, finding a definition, or comparing two library versions. Strongly preferred over locating the jar in a local build cache and unzipping it: it works for any Maven Central artifact, no local checkout or build needed.\n\n",
      "get" : {
        "description" : "Reads one source file from a Maven Central library's sources jar (the `-sources.jar` artifact). Pass the `link` value returned by list_source_files. Use this whenever you need the exact source text of a JVM library — tracing behavior into a dependency, confirming a public API's implementation, finding a definition, or comparing two library versions. Strongly preferred over locating the jar in a local build cache and unzipping it: it works for any Maven Central artifact, no local checkout or build needed.\n\n",
        "parameters" : [
          {
            "name" : "groupId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "artifactId",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "version",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          },
          {
            "name" : "link",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    },
    "/api/symbol-to-artifact" : {
      "description" : "Finds which Maven artifact contains a given Java/Kotlin/Scala class: resolves a class name, nested type (e.g. Outer.Builder), fully-qualified type, or package name to the Maven Central artifacts (groupId, artifactId) that publish it. Exact case is preferred; a case-insensitive match is tried if that finds nothing. Several artifacts can contain the same simple name (e.g. a Java and a Scala library): check each result rather than assuming the first. Use this when you have a symbol from a stack trace, an import line, or an error message and you need to know which library to look in. From there, chain into get_latest_version, then list_source_files / list_javadoc_symbols to read the code or docs.\n\n",
      "get" : {
        "description" : "Finds which Maven artifact contains a given Java/Kotlin/Scala class: resolves a class name, nested type (e.g. Outer.Builder), fully-qualified type, or package name to the Maven Central artifacts (groupId, artifactId) that publish it. Exact case is preferred; a case-insensitive match is tried if that finds nothing. Several artifacts can contain the same simple name (e.g. a Java and a Scala library): check each result rather than assuming the first. Use this when you have a symbol from a stack trace, an import line, or an error message and you need to know which library to look in. From there, chain into get_latest_version, then list_source_files / list_javadoc_symbols to read the code or docs.\n\n",
        "parameters" : [
          {
            "name" : "query",
            "in" : "query",
            "required" : true,
            "schema" : {
              "type" : "string"
            },
            "allowReserved" : false,
            "style" : "form"
          }
        ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/GroupArtifact"
                  },
                  "uniqueItems" : true
                }
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ApiError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "ApiError" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          }
        },
        "required" : [
          "message"
        ]
      },
      "Content" : {
        "type" : "object",
        "properties" : {
          "external" : {
            "type" : "boolean",
            "description" : "True if the entry links to an external site rather than a page inside this jar."
          },
          "fqn" : {
            "type" : "string",
            "description" : "Fully-qualified name of the documented symbol."
          },
          "link" : {
            "type" : "string",
            "description" : "Path/link of this entry within the javadoc jar. Pass it as `link` to get_javadoc_symbol to read the rendered page."
          },
          "extra" : {
            "type" : "string",
            "description" : "Extra doc-format-specific metadata; may be empty."
          },
          "kind" : {
            "type" : "string",
            "description" : "The kind of symbol, e.g. \"class\", \"object\", \"def\"; may be empty."
          },
          "type" : {
            "type" : "string",
            "description" : "The symbol's declared type/signature when the doc format provides one; may be empty."
          }
        },
        "required" : [
          "link",
          "external",
          "fqn",
          "type",
          "kind",
          "extra"
        ],
        "description" : "One documented entry (class, object, method, package, or resource) from a library's Javadoc/Scaladoc jar."
      },
      "GroupArtifact" : {
        "type" : "object",
        "properties" : {
          "groupId" : {
            "type" : "string",
            "description" : "The Maven groupId, e.g. \"dev.zio\"."
          },
          "artifactId" : {
            "type" : "string",
            "description" : "The Maven artifactId, e.g. \"zio_3\"."
          }
        },
        "required" : [
          "groupId",
          "artifactId"
        ],
        "description" : "A Maven Central artifact coordinate: a groupId and artifactId, without a version."
      }
    }
  }
}