workspaceToken (see Authentication) and goes to
the single GraphQL endpoint:
The binder belongs to a client, so there is no top-level
binder query. Reach
it through
me { ... on WorkspaceUser { workspace { clients(filters: { ids: [$clientId] }) { binder { ... } } } } }.
The workspaceToken already identifies the workspace, so you never pass a
workspace ID to read the binder.1. List the files in the binder
Readbinder.subdocuments to list the files Filed filed for the client. This is
the most common read against the binder and backs the binder’s Documents screen.
Pass a SubDocumentsFilter to narrow to unreviewed, flagged, or files under one
parent document; pass null to list everything. See
List the files in a binder for the full
SubDocumentsFilter arguments.
2. Check the missing-item checklist
Readbinder.missingItems to list the missing-document checklist the run
produced: forms the run expected to find but did not. Each item carries a
severity (CRITICAL, MEDIUM, LOW), a status (OPEN, IGNORED,
RESOLVED), and a reason. Filter by status to read only the open items, which
is what a reviewer-facing UI shows first. See
List missing items for the full
BinderMissingItemsFilter argument.
binder.openMissingItemsCount gives you the open count without fetching the
list, which is the cheap query for a badge.
3. Ignore or restore a missing item
When a reviewer dismisses a missing item, move it fromOPEN to IGNORED with
ignoreBinderMissingItem. When they change
their mind, move it back to OPEN with
restoreBinderMissingItem. Both mutations
take the missing-item id (from step 2) and a workspaceId: String!, and
return the updated BinderMissingItem with its new status.
restoreBinderMissingItem with the same id and workspaceId;
the item’s status returns to OPEN.
4. Search the binder
Readbinder.search to search across bookmarks (subdocuments by file name,
issuer, type, or category), annotations, marks, and document contents in one
call. Pass the clientId, the query string, and an optional limit (defaults
to 20). See Search the binder for the full
BinderSearchResults shape.
The web app debounces the input and requires at least two characters before
firing the query; mirror that to avoid noisy partial queries.
Next steps
From here you can go deeper on the binder’s related surfaces:- Annotations and sign-offs: when search surfaces an annotation you want to
reply to, or you want to leave a new note on a file, use the
Document messages API. Sign-offs on a
leadsheet sheet or row use the same
createDocumentMessagemutation withtype: "activity",markType: "signoff"; see Sign off on a sheet or row. - Leadsheets and review: the binder also carries a
leadsheetsfield that returns the leadsheets tree for aTAX_PREPorTAX_REVIEWrun. See Read a client’s leadsheets for that flow. - Badge counts: for a quick badge without fetching the full missing-items
list, read
binder.messageCountsvia Read message counts. - Full reference: every binder field, type, and mutation is documented on Binder.