Inspect an unsaved JAR

OpenAPI contract

Method
POST
Path
/api/v1/analyses/input-index
Security
jwtBearer (bearer)
Response status
200 400 401 403 404 413 429 500
Request and response schemas
JSON
{
  "requestBody": {
    "multipart/form-data": {
      "properties": {
        "file": {
          "format": "binary",
          "type": "string"
        }
      },
      "required": [
        "file"
      ],
      "type": "object"
    }
  },
  "responses": {
    "200": {
      "description": "Input class and member metadata",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/Index"
        }
      }
    },
    "400": {
      "description": "Invalid request",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/RequestError"
        }
      }
    },
    "401": {
      "description": "Authentication required",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/SecurityError"
        }
      }
    },
    "403": {
      "description": "Not permitted",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/SecurityError"
        }
      }
    },
    "404": {
      "description": "Analysis or input not found",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/ApiError"
        }
      }
    },
    "413": {
      "description": "Upload or expanded archive exceeds its limit",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/ApiError"
        }
      }
    },
    "429": {
      "description": "Request or concurrency limit exceeded",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/RateLimitError"
        }
      }
    },
    "500": {
      "description": "Unexpected server error",
      "content": {
        "application/json": {
          "$ref": "#/components/schemas/ApiError"
        }
      }
    }
  }
}

Upload a JAR to obtain searchable exact class, member and resource choices before starting an analysis. Normal upload validation applies. The returned input hash identifies the indexed bytes. Indexing does not execute the application, start an analysis or activate Object Localization. Selecting symbols does not assert that unknown runtime behavior has been fully declared.

The index includes entryPointCandidates alongside classes, resources, and inputInspection. Each candidate has className, method, descriptor, entryName, and source: "PUBLIC_STATIC_MAIN"; it identifies an inspected public static main method with the exact descriptor ([Ljava/lang/String;)V. The user must select actual application entries. Candidates do not include manifest or annotation detection and are not applied automatically.