{
  "version": "v1",
  "protocol": "rest",
  "ownerName": "Google",
  "discoveryVersion": "v1",
  "servicePath": "",
  "ownerDomain": "google.com",
  "title": "Deep Review API",
  "version_module": true,
  "id": "deepreview:v1",
  "mtlsRootUrl": "https://deepreview.mtls.googleapis.com/",
  "documentationLink": "https://research.google/",
  "canonicalName": "DeepReview",
  "parameters": {
    "key": {
      "location": "query",
      "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
      "type": "string"
    },
    "callback": {
      "description": "JSONP",
      "location": "query",
      "type": "string"
    },
    "$.xgafv": {
      "type": "string",
      "description": "V1 error format.",
      "location": "query",
      "enumDescriptions": [
        "v1 error format",
        "v2 error format"
      ],
      "enum": [
        "1",
        "2"
      ]
    },
    "uploadType": {
      "type": "string",
      "location": "query",
      "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
    },
    "prettyPrint": {
      "description": "Returns response with indentations and line breaks.",
      "default": "true",
      "location": "query",
      "type": "boolean"
    },
    "access_token": {
      "type": "string",
      "description": "OAuth access token.",
      "location": "query"
    },
    "oauth_token": {
      "type": "string",
      "description": "OAuth 2.0 token for the current user.",
      "location": "query"
    },
    "alt": {
      "default": "json",
      "type": "string",
      "location": "query",
      "description": "Data format for response.",
      "enumDescriptions": [
        "Responses with Content-Type of application/json",
        "Media download with context-dependent Content-Type",
        "Responses with Content-Type of application/x-protobuf"
      ],
      "enum": [
        "json",
        "media",
        "proto"
      ]
    },
    "quotaUser": {
      "type": "string",
      "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
      "location": "query"
    },
    "fields": {
      "location": "query",
      "description": "Selector specifying which fields to include in a partial response.",
      "type": "string"
    },
    "upload_protocol": {
      "location": "query",
      "type": "string",
      "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
    }
  },
  "description": "Deep Review API for automated conference-quality scientific paper reviews.",
  "schemas": {
    "ReviewSummary": {
      "type": "object",
      "id": "ReviewSummary",
      "description": "Lightweight summary of a Review execution run for display in Document views.",
      "properties": {
        "state": {
          "enumDescriptions": [
            "Default unspecified state.",
            "Review created and queued, awaiting worker scheduling.",
            "Review worker is actively evaluating the document.",
            "Review succeeded with generated report.",
            "Review failed after exhausting retry attempts."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "RUNNING",
            "SUCCEEDED",
            "FAILED"
          ],
          "readOnly": true,
          "type": "string",
          "description": "Output only. Current review lifecycle state."
        },
        "createTime": {
          "readOnly": true,
          "format": "google-datetime",
          "type": "string",
          "description": "Output only. Timestamp when this review attempt was initiated."
        },
        "review": {
          "description": "Output only. Resource name of the Review. Format: `documents/{document}/reviews/{review}`",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "CitationMetadata": {
      "description": "Structured bibliographic metadata for an extracted or retrieved work.",
      "type": "object",
      "properties": {
        "title": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Work title."
        },
        "urls": {
          "description": "Output only. URLs associated with the reference.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "readOnly": true
        },
        "publicationDate": {
          "description": "Output only. Publication date (month and day left as 0 if just year).",
          "$ref": "Date",
          "readOnly": true
        },
        "authors": {
          "readOnly": true,
          "items": {
            "$ref": "Author"
          },
          "description": "Output only. Ordered list of authors.",
          "type": "array"
        },
        "volume": {
          "readOnly": true,
          "description": "Output only. Volume identifier.",
          "type": "string"
        },
        "source": {
          "readOnly": true,
          "description": "Output only. Source database for retrieved metadata (e.g., \"openalex\", \"crossref\"). Empty on `extracted_metadata`.",
          "type": "string"
        },
        "journal": {
          "description": "Output only. Journal, conference, or venue name.",
          "readOnly": true,
          "type": "string"
        },
        "doi": {
          "description": "Output only. Digital Object Identifier (DOI).",
          "readOnly": true,
          "type": "string"
        },
        "pages": {
          "description": "Output only. Page range or article number.",
          "type": "string",
          "readOnly": true
        }
      },
      "id": "CitationMetadata"
    },
    "Status": {
      "type": "object",
      "properties": {
        "details": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": {
              "type": "any",
              "description": "Properties of the object. Contains field @type with type URL."
            }
          },
          "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
        },
        "code": {
          "description": "The status code, which should be an enum value of google.rpc.Code.",
          "type": "integer",
          "format": "int32"
        },
        "message": {
          "type": "string",
          "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client."
        }
      },
      "id": "Status",
      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors)."
    },
    "TextLocation": {
      "properties": {
        "quotedLinePreview": {
          "readOnly": true,
          "description": "Output only. Verbatim snippet of the anchored source line(s).",
          "type": "string"
        },
        "firstLine": {
          "readOnly": true,
          "format": "int32",
          "type": "integer",
          "description": "Output only. 1-indexed inclusive first line number."
        },
        "lastLine": {
          "type": "integer",
          "readOnly": true,
          "format": "int32",
          "description": "Output only. 1-indexed inclusive last line number."
        },
        "firstColumn": {
          "readOnly": true,
          "description": "Output only. Optional 1-indexed inclusive first column offset within `first_line`.",
          "type": "integer",
          "format": "int32"
        },
        "lastColumn": {
          "readOnly": true,
          "type": "integer",
          "format": "int32",
          "description": "Output only. Optional 1-indexed inclusive last column offset within `last_line`."
        }
      },
      "description": "Location anchor within a plain-text, Markdown, or LaTeX source document.",
      "id": "TextLocation",
      "type": "object"
    },
    "DeepReviewRunConfig": {
      "type": "object",
      "description": "Configuration options for the multi-agent document review execution pipeline.",
      "id": "DeepReviewRunConfig",
      "properties": {
        "geminiApiKey": {
          "type": "string",
          "description": "Optional. Input only. Developer Bring-Your-Own-Key Gemini API key. When provided, requests are billed to the caller's Gemini API project. Input only; forwarded to the asynchronous review runner in the task payload and never persisted in database records or returned in review resources (see companion field `gemini_api_key_set`, AIP-147)."
        },
        "topology": {
          "enumDescriptions": [
            "Default unspecified topology. The backend defaults to standard high quality.",
            "Extra high quality topology with exhaustive evaluation passes.",
            "Standard high quality conference review topology.",
            "Medium quality topology balancing review latency and depth.",
            "Low latency / fast turnaround topology."
          ],
          "type": "string",
          "enum": [
            "TOPOLOGY_UNSPECIFIED",
            "EXTRA_HIGH",
            "HIGH",
            "MID",
            "LOW"
          ],
          "description": "Optional. Review execution topology profile to use."
        },
        "geminiApiKeySet": {
          "type": "boolean",
          "readOnly": true,
          "description": "Output only. Indicates whether a developer Bring-Your-Own-Key Gemini API key was provided for this review run."
        },
        "model": {
          "description": "Optional. The Gemini model name/version to use (e.g., \"gemini-1.5-pro\", \"gemini-2.0-flash\").",
          "type": "string"
        },
        "userPrompt": {
          "description": "Optional. User-provided guidance, focus areas, or custom evaluation instructions passed to the review agents.",
          "type": "string"
        }
      }
    },
    "DriveSource": {
      "description": "Configuration for importing a document directly from Google Drive.",
      "properties": {
        "revisionId": {
          "description": "Optional. Input only. Immutable. Specific revision ID to import (defaults to latest head revision).",
          "type": "string"
        },
        "resourceKey": {
          "type": "string",
          "description": "Optional. Input only. Immutable. Resource key (`^[a-zA-Z0-9_-]{1,128}$`) required to access certain older link-shared Google Drive files returned by the Google Drive Picker (for shortcuts, pass the resolved target file's resource key). Never persisted in database records or returned in Document resources (see companion field `resource_key_set`, AIP-147)."
        },
        "resourceKeySet": {
          "readOnly": true,
          "description": "Output only. Indicates whether a resource key was provided for this Drive source.",
          "type": "boolean"
        },
        "fileId": {
          "type": "string",
          "description": "Required. Immutable. The Google Drive file ID (e.g. \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\"). For Google Drive shortcuts, callers must pass the resolved target file's `file_id` and `resource_key`."
        }
      },
      "type": "object",
      "id": "DriveSource"
    },
    "CitationReport": {
      "properties": {
        "fieldComparisons": {
          "type": "array",
          "readOnly": true,
          "description": "Output only. Per-field comparisons (populated only when `retrieved_metadata` is present).",
          "items": {
            "$ref": "FieldComparison"
          }
        },
        "extractedMetadata": {
          "$ref": "CitationMetadata",
          "description": "Output only. Metadata parsed from the paper's bibliography entry.",
          "readOnly": true
        },
        "finalVerdict": {
          "enum": [
            "VERDICT_UNSPECIFIED",
            "OK",
            "MINOR_MISMATCH",
            "MAJOR_MISMATCH",
            "VERIFIED_BY_SEARCH",
            "NOT_FOUND",
            "HALLUCINATED",
            "SKIPPED"
          ],
          "readOnly": true,
          "description": "Output only. Final combined verdict after database lookup and search grounding.",
          "enumDescriptions": [
            "Default unspecified verdict.",
            "Reference metadata matches scholarly database record.",
            "Minor discrepancy (e.g., publication year off by 1 or venue variation).",
            "Major discrepancy in authors, year, or venue.",
            "Reference verified via Google Search grounding.",
            "Reference not found in scholarly databases and unverified by search.",
            "Reference flagged as likely hallucinated by Google Search grounding.",
            "Non-paper entry (e.g., software package or URL) skipped during lookup."
          ],
          "type": "string"
        },
        "entryType": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. BibTeX entry type (e.g., \"article\", \"inproceedings\", \"misc\")."
        },
        "groundingUrls": {
          "items": {
            "$ref": "GroundingUrl"
          },
          "type": "array",
          "description": "Output only. Web sources surfaced during Google Search grounding.",
          "readOnly": true
        },
        "searchRationale": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Explanation from the Google Search grounding verification step (when run)."
        },
        "citationKey": {
          "description": "Output only. Generated BibTeX citation key (e.g., \"smith2023deep\").",
          "type": "string",
          "readOnly": true
        },
        "retrievedMetadata": {
          "readOnly": true,
          "$ref": "CitationMetadata",
          "description": "Output only. Metadata retrieved from OpenAlex / Crossref. Populated only when the retrieved work's title matches the extracted title. Omitted when no candidate matches the title so unrelated papers are never displayed as candidates."
        },
        "refNum": {
          "readOnly": true,
          "description": "Output only. 1-indexed bibliography reference number in the paper.",
          "type": "integer",
          "format": "int32"
        },
        "retrievedBibtex": {
          "description": "Output only. Formatted BibTeX entry for the verified `retrieved_metadata` when present. Empty when `retrieved_metadata` is absent.",
          "type": "string",
          "readOnly": true
        },
        "searchVerdict": {
          "type": "string",
          "description": "Output only. Verdict from Google Search grounding verification (when run).",
          "readOnly": true,
          "enumDescriptions": [
            "Default unspecified search verdict (search grounding not run).",
            "Google Search grounding confirmed the work exists.",
            "Google Search grounding determined the reference is likely hallucinated.",
            "Google Search grounding encountered an execution or parsing error."
          ],
          "enum": [
            "SEARCH_VERDICT_UNSPECIFIED",
            "NOT_HALLUCINATED",
            "HALLUCINATED_BY_SEARCH",
            "SEARCH_ERROR"
          ]
        },
        "rawReference": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Verbatim reference string extracted from the paper's bibliography."
        },
        "lookupVerdict": {
          "enumDescriptions": [
            "Default unspecified verdict.",
            "Reference metadata matches scholarly database record.",
            "Minor discrepancy (e.g., publication year off by 1 or venue variation).",
            "Major discrepancy in authors, year, or venue.",
            "Reference verified via Google Search grounding.",
            "Reference not found in scholarly databases and unverified by search.",
            "Reference flagged as likely hallucinated by Google Search grounding.",
            "Non-paper entry (e.g., software package or URL) skipped during lookup."
          ],
          "type": "string",
          "description": "Output only. Verdict from scholarly database lookup (OpenAlex / Crossref) before search grounding.",
          "readOnly": true,
          "enum": [
            "VERDICT_UNSPECIFIED",
            "OK",
            "MINOR_MISMATCH",
            "MAJOR_MISMATCH",
            "VERIFIED_BY_SEARCH",
            "NOT_FOUND",
            "HALLUCINATED",
            "SKIPPED"
          ]
        },
        "searchMethod": {
          "description": "Output only. Strategy that produced the scholarly database match (e.g., \"doi\", \"title\", \"title_author\", \"autocomplete\"). Empty when no title-matching candidate was found.",
          "type": "string",
          "readOnly": true
        },
        "firstAuthorFamilyNameMatch": {
          "description": "Output only. Whether the first author's family name matched between extracted and retrieved metadata.",
          "type": "boolean",
          "readOnly": true
        }
      },
      "description": "Structured citation verification report for a single bibliography reference.",
      "id": "CitationReport",
      "type": "object"
    },
    "Document": {
      "description": "Document Resource Model representing an uploaded document for review. Documents are immutable post-creation; to review a new version, create a new Document.",
      "id": "Document",
      "properties": {
        "latestReviewSummary": {
          "readOnly": true,
          "$ref": "ReviewSummary",
          "description": "Output only. Summary of the most recent review run for this document, if any."
        },
        "displayName": {
          "description": "Optional. User-provided display title or filename for the document.",
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": "Identifier. Resource name in format `documents/{document}`."
        },
        "driveSource": {
          "$ref": "DriveSource",
          "description": "Optional. Reference to a Google Drive file to import."
        },
        "createTime": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Timestamp when the document was initially created.",
          "format": "google-datetime"
        }
      },
      "type": "object"
    },
    "DownloadDocumentResponse": {
      "properties": {},
      "type": "object",
      "id": "DownloadDocumentResponse",
      "description": "Response message for downloading a Document's raw content via Scotty media."
    },
    "Result": {
      "description": "Encapsulates the synthesized output or failure details of a single review execution.",
      "id": "Result",
      "type": "object",
      "properties": {
        "anchoredComments": {
          "readOnly": true,
          "description": "Output only. Structured review comments anchored to specific locations in the document. At most 300 anchored comments are returned per review.",
          "items": {
            "$ref": "AnchoredReviewComment"
          },
          "type": "array"
        },
        "error": {
          "readOnly": true,
          "$ref": "Status",
          "description": "Output only. Failure status details if review execution failed."
        },
        "reviewMarkdown": {
          "readOnly": true,
          "description": "Output only. Synthesized review report markdown.",
          "type": "string"
        }
      }
    },
    "ListDocumentsResponse": {
      "properties": {
        "nextPageToken": {
          "description": "A token to retrieve the next page of results, or empty if no further pages exist.",
          "type": "string"
        },
        "documents": {
          "items": {
            "$ref": "Document"
          },
          "description": "The list of Document resources.",
          "type": "array"
        }
      },
      "description": "Response message for listing Document resources.",
      "id": "ListDocumentsResponse",
      "type": "object"
    },
    "ListOperationsResponse": {
      "type": "object",
      "properties": {
        "nextPageToken": {
          "type": "string",
          "description": "The standard List next-page token."
        },
        "operations": {
          "type": "array",
          "description": "A list of operations that matches the specified filter in the request.",
          "items": {
            "$ref": "Operation"
          }
        },
        "unreachable": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "description": "Unordered list. Unreachable resources. Populated when the request sets `ListOperationsRequest.return_partial_success` and reads across collections. For example, when attempting to list all resources across all supported locations."
        }
      },
      "id": "ListOperationsResponse",
      "description": "The response message for Operations.ListOperations."
    },
    "CancelOperationRequest": {
      "type": "object",
      "properties": {},
      "description": "The request message for Operations.CancelOperation.",
      "id": "CancelOperationRequest"
    },
    "Operation": {
      "description": "This resource represents a long-running operation that is the result of a network API call.",
      "properties": {
        "name": {
          "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
          "type": "string"
        },
        "error": {
          "description": "The error result of the operation in case of failure or cancellation.",
          "$ref": "Status"
        },
        "response": {
          "description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
          "type": "object",
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          }
        },
        "done": {
          "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
          "type": "boolean"
        },
        "metadata": {
          "additionalProperties": {
            "type": "any",
            "description": "Properties of the object. Contains field @type with type URL."
          },
          "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
          "type": "object"
        }
      },
      "id": "Operation",
      "type": "object"
    },
    "TextQuoteSelector": {
      "id": "TextQuoteSelector",
      "description": "W3C Web Annotation TextQuoteSelector for resilient text anchoring (https://www.w3.org/TR/annotation-model/#text-quote-selector).",
      "properties": {
        "prefix": {
          "type": "string",
          "description": "Output only. Characters immediately preceding `exact` for disambiguation.",
          "readOnly": true
        },
        "suffix": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Characters immediately following `exact` for disambiguation."
        },
        "exact": {
          "type": "string",
          "description": "Output only. Verbatim substring extracted from the document character stream.",
          "readOnly": true
        }
      },
      "type": "object"
    },
    "Date": {
      "properties": {
        "month": {
          "format": "int32",
          "type": "integer",
          "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day."
        },
        "year": {
          "type": "integer",
          "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
          "format": "int32"
        },
        "day": {
          "format": "int32",
          "type": "integer",
          "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant."
        }
      },
      "type": "object",
      "id": "Date",
      "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp"
    },
    "GroundingUrl": {
      "type": "object",
      "id": "GroundingUrl",
      "properties": {
        "title": {
          "type": "string",
          "description": "Output only. Source page title or domain.",
          "readOnly": true
        },
        "url": {
          "description": "Output only. Source URL.",
          "type": "string",
          "readOnly": true
        }
      },
      "description": "Web source URL surfaced during Google Search grounding verification."
    },
    "Author": {
      "type": "object",
      "id": "Author",
      "description": "Author name components.",
      "properties": {
        "givenName": {
          "readOnly": true,
          "description": "Output only. Author given name / initials.",
          "type": "string"
        },
        "familyName": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Author family name / surname (or organization name)."
        }
      }
    },
    "Review": {
      "id": "Review",
      "description": "Review Sub-Resource Model representing an evaluation run of a document.",
      "properties": {
        "result": {
          "$ref": "Result",
          "description": "Output only. Review output (markdown, errors, and future modalities).",
          "readOnly": true
        },
        "startTime": {
          "description": "Output only. Timestamp when the worker started evaluation.",
          "format": "google-datetime",
          "type": "string",
          "readOnly": true
        },
        "runConfig": {
          "description": "Optional. Run configuration parameters used for this review.",
          "$ref": "DeepReviewRunConfig"
        },
        "state": {
          "type": "string",
          "description": "Output only. Current review lifecycle state.",
          "enumDescriptions": [
            "Default unspecified state.",
            "Review created and queued, awaiting worker scheduling.",
            "Review worker is actively evaluating the document.",
            "Review succeeded with generated report.",
            "Review failed after exhausting retry attempts."
          ],
          "enum": [
            "STATE_UNSPECIFIED",
            "PENDING",
            "RUNNING",
            "SUCCEEDED",
            "FAILED"
          ],
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Identifier. Resource name in format `documents/{document}/reviews/{review}`."
        },
        "createTime": {
          "type": "string",
          "format": "google-datetime",
          "readOnly": true,
          "description": "Output only. Timestamp when this review attempt was initiated."
        },
        "endTime": {
          "format": "google-datetime",
          "description": "Output only. Timestamp when the review reached a terminal state.",
          "readOnly": true,
          "type": "string"
        },
        "progressPercent": {
          "description": "Output only. Estimated completion progress percentage of the review in [0, 100].",
          "type": "integer",
          "readOnly": true,
          "format": "int32"
        }
      },
      "type": "object"
    },
    "ListReviewsResponse": {
      "properties": {
        "nextPageToken": {
          "description": "A token to retrieve the next page of results, or empty if no further pages exist.",
          "type": "string"
        },
        "reviews": {
          "type": "array",
          "items": {
            "$ref": "Review"
          },
          "description": "The list of Review resources."
        }
      },
      "id": "ListReviewsResponse",
      "description": "Response message for listing Review resources.",
      "type": "object"
    },
    "NormalizedBoundingBox": {
      "type": "object",
      "properties": {
        "bottom": {
          "description": "Output only. Bottom coordinate in [0.0, 1.0].",
          "readOnly": true,
          "type": "number",
          "format": "float"
        },
        "top": {
          "type": "number",
          "format": "float",
          "description": "Output only. Top coordinate in [0.0, 1.0].",
          "readOnly": true
        },
        "right": {
          "readOnly": true,
          "type": "number",
          "description": "Output only. Right coordinate in [0.0, 1.0].",
          "format": "float"
        },
        "left": {
          "format": "float",
          "description": "Output only. Left coordinate in [0.0, 1.0].",
          "type": "number",
          "readOnly": true
        }
      },
      "id": "NormalizedBoundingBox",
      "description": "Bounding box in normalized [0.0, 1.0] page coordinates (origin top-left)."
    },
    "AnchoredReviewComment": {
      "description": "A structured review comment anchored to a specific location in the document.",
      "type": "object",
      "properties": {
        "summary": {
          "type": "string",
          "description": "Output only. Short one-line summary of the review comment.",
          "readOnly": true
        },
        "bodyMarkdown": {
          "description": "Output only. Detailed markdown explanation of the review comment.",
          "readOnly": true,
          "type": "string"
        },
        "citationReport": {
          "readOnly": true,
          "description": "Output only. Optional structured citation verification report when this comment corresponds to a bibliography reference.",
          "$ref": "CitationReport"
        },
        "suggestedEdit": {
          "readOnly": true,
          "description": "Output only. Optional suggested replacement text or edit for the anchored span.",
          "type": "string"
        },
        "severity": {
          "enum": [
            "SEVERITY_UNSPECIFIED",
            "CRITICAL",
            "MAJOR",
            "MINOR",
            "SUGGESTION"
          ],
          "description": "Output only. Severity classification of the comment.",
          "type": "string",
          "enumDescriptions": [
            "Default unspecified severity.",
            "Critical flaw in proofs, methodology, or empirical claims.",
            "Major issue affecting key conclusions or experimental validity.",
            "Minor issue, presentation clarity, or missing detail.",
            "Constructive suggestion or optional improvement."
          ],
          "readOnly": true
        },
        "location": {
          "description": "Output only. Polymorphic location in the document where this comment is anchored.",
          "readOnly": true,
          "$ref": "DocumentLocation"
        },
        "commentId": {
          "readOnly": true,
          "type": "string",
          "description": "Output only. Unique identifier for the comment within the review."
        }
      },
      "id": "AnchoredReviewComment"
    },
    "Empty": {
      "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
      "id": "Empty",
      "properties": {},
      "type": "object"
    },
    "FieldComparison": {
      "description": "Per-field comparison result between extracted and retrieved metadata.",
      "id": "FieldComparison",
      "type": "object",
      "properties": {
        "fieldKey": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Field key (\"title\", \"authors\", \"year\", \"journal\", \"volume\", \"pages\", \"doi\")."
        },
        "match": {
          "readOnly": true,
          "type": "boolean",
          "description": "Output only. Whether the extracted and retrieved values matched."
        },
        "detail": {
          "type": "string",
          "readOnly": true,
          "description": "Output only. Human-readable comparison detail (e.g., \"extracted=2023, found=2024 (diff=1)\")."
        }
      }
    },
    "DocumentLocation": {
      "id": "DocumentLocation",
      "type": "object",
      "properties": {
        "pdf": {
          "$ref": "PdfLocation",
          "readOnly": true,
          "description": "Output only. Location within a rendered PDF document."
        },
        "text": {
          "$ref": "TextLocation",
          "description": "Output only. Location within a plain-text, Markdown, or LaTeX source document.",
          "readOnly": true
        }
      },
      "description": "Polymorphic location targeting either a PDF page region/quote or text lines."
    },
    "PdfLocation": {
      "properties": {
        "quoteSelector": {
          "$ref": "TextQuoteSelector",
          "description": "Output only. W3C Web Annotation TextQuoteSelector (https://www.w3.org/TR/annotation-model/#text-quote-selector) for exact text span highlighting.",
          "readOnly": true
        },
        "pageNumber": {
          "description": "Output only. 1-indexed page number within the PDF document.",
          "readOnly": true,
          "type": "integer",
          "format": "int32"
        },
        "boundingBoxes": {
          "type": "array",
          "description": "Output only. Normalized bounding boxes [0.0, 1.0] relative to page width and height. At most 50 bounding boxes are returned per anchored span.",
          "readOnly": true,
          "items": {
            "$ref": "NormalizedBoundingBox"
          }
        }
      },
      "description": "Location anchor within a PDF document.",
      "type": "object",
      "id": "PdfLocation"
    }
  },
  "revision": "20261016",
  "auth": {
    "oauth2": {
      "scopes": {
        "https://www.googleapis.com/auth/drive.file": {
          "description": "See, edit, create, and delete only the specific Google Drive files you use with this app"
        }
      }
    }
  },
  "batchPath": "batch",
  "resources": {
    "media": {
      "methods": {
        "upload": {
          "request": {
            "$ref": "Document"
          },
          "flatPath": "v1/documents",
          "path": "v1/documents",
          "response": {
            "$ref": "Document"
          },
          "parameterOrder": [],
          "description": "Creates a new Document resource and ingests the manuscript via Scotty or Google Drive.",
          "httpMethod": "POST",
          "parameters": {
            "requestId": {
              "location": "query",
              "type": "string",
              "description": "Optional. Idempotency identifier for network retry safety (AIP-155). Must be a valid UUID4 string."
            },
            "documentId": {
              "location": "query",
              "type": "string",
              "description": "Optional. The ID to use for the document, which will become the final component of the document's resource name. If not provided, a unique server-generated UUID will be assigned."
            }
          },
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ],
          "id": "deepreview.media.upload",
          "supportsMediaUpload": true,
          "mediaUpload": {
            "protocols": {
              "resumable": {
                "path": "/resumable/upload/v1/documents",
                "multipart": true
              },
              "simple": {
                "multipart": true,
                "path": "/upload/v1/documents"
              }
            },
            "maxSize": "20971520",
            "accept": [
              "*/*"
            ]
          }
        },
        "download": {
          "description": "Downloads the original document content (PDF binary) via Scotty media streaming (AIP-136 custom method).",
          "flatPath": "v1/documents/{documentsId}:download",
          "path": "v1/{+name}:download",
          "useMediaDownloadService": true,
          "response": {
            "$ref": "DownloadDocumentResponse"
          },
          "parameters": {
            "name": {
              "required": true,
              "description": "Required. The resource name of the document to download. Format: `documents/{document}`",
              "location": "path",
              "type": "string",
              "pattern": "^documents/[^/]+$"
            }
          },
          "id": "deepreview.media.download",
          "httpMethod": "GET",
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ],
          "supportsMediaDownload": true
        }
      }
    },
    "operations": {
      "resources": {
        "documents": {
          "resources": {
            "reviews": {
              "methods": {
                "get": {
                  "flatPath": "v1/operations/documents/{documentsId}/reviews/{reviewsId}",
                  "scopes": [
                    "https://www.googleapis.com/auth/drive.file"
                  ],
                  "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
                  "response": {
                    "$ref": "Operation"
                  },
                  "httpMethod": "GET",
                  "id": "deepreview.operations.documents.reviews.get",
                  "parameters": {
                    "name": {
                      "location": "path",
                      "type": "string",
                      "required": true,
                      "pattern": "^operations/documents/[^/]+/reviews/[^/]+$",
                      "description": "The name of the operation resource."
                    }
                  },
                  "parameterOrder": [
                    "name"
                  ],
                  "path": "v1/{+name}"
                }
              }
            }
          }
        }
      },
      "methods": {
        "list": {
          "path": "v1/{+name}",
          "httpMethod": "GET",
          "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
          "parameters": {
            "filter": {
              "location": "query",
              "description": "The standard list filter.",
              "type": "string"
            },
            "pageSize": {
              "description": "The standard list page size.",
              "location": "query",
              "type": "integer",
              "format": "int32"
            },
            "name": {
              "description": "The name of the operation's parent resource.",
              "pattern": "^operations$",
              "required": true,
              "type": "string",
              "location": "path"
            },
            "returnPartialSuccess": {
              "description": "When set to `true`, operations that are reachable are returned as normal, and those that are unreachable are returned in the ListOperationsResponse.unreachable field. This can only be `true` when reading across collections. For example, when `parent` is set to `\"projects/example/locations/-\"`. This field is not supported by default and will result in an `UNIMPLEMENTED` error if set unless explicitly documented otherwise in service or product specific documentation.",
              "type": "boolean",
              "location": "query"
            },
            "pageToken": {
              "description": "The standard list page token.",
              "location": "query",
              "type": "string"
            }
          },
          "parameterOrder": [
            "name"
          ],
          "id": "deepreview.operations.list",
          "flatPath": "v1/operations",
          "response": {
            "$ref": "ListOperationsResponse"
          },
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ]
        },
        "cancel": {
          "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ],
          "id": "deepreview.operations.cancel",
          "httpMethod": "POST",
          "response": {
            "$ref": "Empty"
          },
          "parameterOrder": [
            "name"
          ],
          "path": "v1/{+name}:cancel",
          "parameters": {
            "name": {
              "required": true,
              "location": "path",
              "pattern": "^operations/.*$",
              "description": "The name of the operation resource to be cancelled.",
              "type": "string"
            }
          },
          "flatPath": "v1/operations/{operationsId}:cancel",
          "request": {
            "$ref": "CancelOperationRequest"
          }
        },
        "delete": {
          "httpMethod": "DELETE",
          "response": {
            "$ref": "Empty"
          },
          "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
          "id": "deepreview.operations.delete",
          "parameters": {
            "name": {
              "pattern": "^operations/.*$",
              "type": "string",
              "description": "The name of the operation resource to be deleted.",
              "required": true,
              "location": "path"
            }
          },
          "path": "v1/{+name}",
          "flatPath": "v1/operations/{operationsId}",
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ],
          "parameterOrder": [
            "name"
          ]
        }
      }
    },
    "documents": {
      "methods": {
        "delete": {
          "response": {
            "$ref": "Empty"
          },
          "description": "Deletes a document and all associated reviews and stored blobs.",
          "path": "v1/{+name}",
          "parameters": {
            "name": {
              "location": "path",
              "type": "string",
              "required": true,
              "description": "Required. The resource name of the document to delete. Format: `documents/{document}`",
              "pattern": "^documents/[^/]+$"
            },
            "allowMissing": {
              "location": "query",
              "type": "boolean",
              "description": "Optional. If set to true, and the document is not found, the request succeeds."
            },
            "force": {
              "type": "boolean",
              "location": "query",
              "description": "Optional. If set to true, any child resources (e.g. review resources) are also deleted."
            }
          },
          "flatPath": "v1/documents/{documentsId}",
          "httpMethod": "DELETE",
          "id": "deepreview.documents.delete",
          "parameterOrder": [
            "name"
          ],
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ]
        },
        "get": {
          "response": {
            "$ref": "Document"
          },
          "httpMethod": "GET",
          "path": "v1/{+name}",
          "id": "deepreview.documents.get",
          "flatPath": "v1/documents/{documentsId}",
          "parameterOrder": [
            "name"
          ],
          "parameters": {
            "name": {
              "location": "path",
              "pattern": "^documents/[^/]+$",
              "required": true,
              "description": "Required. The resource name of the document to retrieve. Format: `documents/{document}`",
              "type": "string"
            }
          },
          "description": "Retrieves document metadata and review history.",
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ]
        },
        "list": {
          "id": "deepreview.documents.list",
          "parameterOrder": [],
          "flatPath": "v1/documents",
          "parameters": {
            "pageToken": {
              "type": "string",
              "location": "query",
              "description": "Optional. A page token received from a previous `ListDocuments` call."
            },
            "orderBy": {
              "location": "query",
              "description": "Optional. Supported AIP-132 order_by field.",
              "type": "string"
            },
            "filter": {
              "description": "Optional. Supported AIP-160 filter expressions (e.g., `display_name = \"...\"`).",
              "location": "query",
              "type": "string"
            },
            "pageSize": {
              "format": "int32",
              "type": "integer",
              "description": "Optional. The maximum number of documents to return in a single page. The server may return fewer than this value. If unspecified, at most 50 documents will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
              "location": "query"
            }
          },
          "httpMethod": "GET",
          "scopes": [
            "https://www.googleapis.com/auth/drive.file"
          ],
          "path": "v1/documents",
          "description": "Lists documents for the authenticated caller with cursor pagination.",
          "response": {
            "$ref": "ListDocumentsResponse"
          }
        }
      },
      "resources": {
        "reviews": {
          "methods": {
            "create": {
              "parameters": {
                "reviewId": {
                  "description": "Optional. The ID to use for the review, which will become the final component of the review's resource name. If not provided, a unique server-generated UUID will be assigned.",
                  "location": "query",
                  "type": "string"
                },
                "parent": {
                  "type": "string",
                  "location": "path",
                  "description": "Required. The parent Document resource name where this review will be created. Format: `documents/{document}`",
                  "required": true,
                  "pattern": "^documents/[^/]+$"
                },
                "requestId": {
                  "description": "Optional. Idempotency identifier for network retry safety (AIP-155). Must be a valid UUID4 string.",
                  "type": "string",
                  "location": "query"
                }
              },
              "request": {
                "$ref": "Review"
              },
              "path": "v1/{+parent}/reviews",
              "httpMethod": "POST",
              "flatPath": "v1/documents/{documentsId}/reviews",
              "scopes": [
                "https://www.googleapis.com/auth/drive.file"
              ],
              "description": "Creates and initiates an asynchronous multi-agent review for a document.",
              "response": {
                "$ref": "Operation"
              },
              "id": "deepreview.documents.reviews.create",
              "parameterOrder": [
                "parent"
              ]
            },
            "get": {
              "flatPath": "v1/documents/{documentsId}/reviews/{reviewsId}",
              "path": "v1/{+name}",
              "description": "Retrieves a specific review execution result.",
              "parameters": {
                "name": {
                  "description": "Required. The resource name of the review to retrieve. Format: `documents/{document}/reviews/{review}`",
                  "type": "string",
                  "location": "path",
                  "required": true,
                  "pattern": "^documents/[^/]+/reviews/[^/]+$"
                }
              },
              "scopes": [
                "https://www.googleapis.com/auth/drive.file"
              ],
              "parameterOrder": [
                "name"
              ],
              "id": "deepreview.documents.reviews.get",
              "httpMethod": "GET",
              "response": {
                "$ref": "Review"
              }
            },
            "list": {
              "parameterOrder": [
                "parent"
              ],
              "parameters": {
                "pageSize": {
                  "description": "Optional. The maximum number of reviews to return in a single page. The server may return fewer than this value. If unspecified, at most 50 reviews will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
                  "type": "integer",
                  "location": "query",
                  "format": "int32"
                },
                "filter": {
                  "location": "query",
                  "type": "string",
                  "description": "Optional. Supported AIP-160 filter expressions."
                },
                "parent": {
                  "location": "path",
                  "description": "Required. The parent Document resource name. Format: `documents/{document}`",
                  "required": true,
                  "type": "string",
                  "pattern": "^documents/[^/]+$"
                },
                "pageToken": {
                  "location": "query",
                  "description": "Optional. A page token received from a previous `ListReviews` call.",
                  "type": "string"
                },
                "orderBy": {
                  "location": "query",
                  "description": "Optional. Supported AIP-132 order_by field.",
                  "type": "string"
                }
              },
              "description": "Lists all review execution runs for a document.",
              "httpMethod": "GET",
              "scopes": [
                "https://www.googleapis.com/auth/drive.file"
              ],
              "id": "deepreview.documents.reviews.list",
              "flatPath": "v1/documents/{documentsId}/reviews",
              "path": "v1/{+parent}/reviews",
              "response": {
                "$ref": "ListReviewsResponse"
              }
            }
          }
        }
      }
    }
  },
  "kind": "discovery#restDescription",
  "rootUrl": "https://deepreview.googleapis.com/",
  "name": "deepreview",
  "basePath": "",
  "fullyEncodeReservedExpansion": true,
  "icons": {
    "x16": "http://www.google.com/images/icons/product/search-16.gif",
    "x32": "http://www.google.com/images/icons/product/search-32.gif"
  },
  "baseUrl": "https://deepreview.googleapis.com/"
}
