{
  "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. 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. 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"
          }
        ],
        "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. 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. 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"
          }
        ],
        "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" : "Searches the indexed Maven Central catalog for artifacts whose groupId or artifactId contains a substring (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. Pair with get_latest_version once you've picked an artifact.\n\n",
      "get" : {
        "description" : "Searches the indexed Maven Central catalog for artifacts whose groupId or artifactId contains a substring (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. Pair with get_latest_version once you've picked an artifact.\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" : "Resolves a class name, fully-qualified type, or package name to the Maven Central artifact (groupId, artifactId) that publishes it. Case-sensitive. 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" : "Resolves a class name, fully-qualified type, or package name to the Maven Central artifact (groupId, artifactId) that publishes it. Case-sensitive. 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."
      }
    }
  }
}