Skip to main content

AiReviewWorkspace

The read root. Everything AI Review owns for one data room hangs off it.

A federated entity rather than a namespace container: it carries a key, it has a reference resolver, and another subgraph can contribute fields to it.

dataRoomId is the key because every review is room-scoped. A client cannot reach a review, a cell or a selection verdict without naming a room, so the room authorization check happens once, here, instead of on every field below.

type AiReviewWorkspace {
dataRoomId: ID!
dataRoom: DataRoom!
reviews(
first: Int
after: String
last: Int
before: String
): AiReviewsConnection
review(
id: ID!
): AiReview
validateSelection(
documentIds: [ID!]!
): [AiReviewSelectionVerdict!]!
templates: [AiReviewTemplate!]!
models: [AiReviewModel!]!
usage: AiReviewRoomUsage!
}

Fields​

AiReviewWorkspace.dataRoomId ● ID! non-null scalar​

AiReviewWorkspace.dataRoom ● DataRoom! non-null object​

The live room, for name and permissions.

AiReviewWorkspace.reviews ● AiReviewsConnection object​

The review list for this room. Paged; the router caps a page at 50.

AiReviewWorkspace.reviews.first ● Int scalar​

Returns the first _n_ elements from the list.

AiReviewWorkspace.reviews.after ● String scalar​

Returns the elements in the list that come after the specified cursor.

AiReviewWorkspace.reviews.last ● Int scalar​

Returns the last _n_ elements from the list.

AiReviewWorkspace.reviews.before ● String scalar​

Returns the elements in the list that come before the specified cursor.

AiReviewWorkspace.review ● AiReview object​

One review with its fields, documents, cells and runs.

Null when the review does not belong to this workspace's room, which is the same answer as "does not exist": a caller must not learn that a review id is real by getting a different error for another room's review.

AiReviewWorkspace.review.id ● ID! non-null scalar​

AiReviewWorkspace.validateSelection ● [AiReviewSelectionVerdict!]! non-null object​

Validate selected documents before creating a review. Returns one verdict per document so the selection screen can show extractability before proceeding.

No dataRoomId argument: the workspace supplies it, which removes a mismatch the old root field had to validate.

AiReviewWorkspace.validateSelection.documentIds ● [ID!]! non-null scalar​

AiReviewWorkspace.templates ● [AiReviewTemplate!]! non-null object​

Built-in field sets for one-click draft seeding.

Configuration, not data. This resolver ignores dataRoomId: templates are global and identical in every room. They live here rather than on a flat root field so the read surface has exactly one entry point.

AiReviewWorkspace.models ● [AiReviewModel!]! non-null object​

The picker's offer: Active and Deprecated only, never Archived. Ignores dataRoomId for the same reason getTemplates does - the catalog is configuration, identical in every room.

AiReviewWorkspace.usage ● AiReviewRoomUsage! non-null object​

What the room has spent across every review in it, totalled and split per review. Same aggregate as AiReview.usage, one level up.

Returned By​

aiReviewWorkspace query