> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solo.one/llms.txt
> Use this file to discover all available pages before exploring further.

# Querying with GraphQL

> Filter, paginate and read nested records furnished to your networks

Every read of furnished data starts from `furnished(networkIds:)`, which sets
the networks the query can see. The examples below read the consumer
furnished in [Furnishing with GraphQL](https://docs.solo.one/api-overview/graphql/furnishing.md).

## Search and paginate

Find consumers by last name, newest first, with each one's most recent
document capture and the institution that furnished it:

```graphql theme={null}
query ConsumersByLastName($networkIds: [UUID!], $lastName: String!) {
  furnished(networkIds: $networkIds) {
    consumerIdentitiesConnection(
      first: 20
      filter: { field: { lastName: { exact: $lastName } } }
      order: [{ field: { createdAt: DESC } }]
    ) {
      totalCount
      pageInfo {
        hasNextPage
        endCursor
      }
      edges {
        node {
          id
          identifier
          firstName
          lastName
          documentCaptureEvents(limit: 1, order: [{ field: { documentCaptureTimestamp: DESC } }]) {
            documentType
            documentCaptureTimestamp
            attestationEvent {
              furnishingEntity {
                name
              }
            }
          }
        }
      }
    }
  }
}
```

```json Variables theme={null}
{
  "networkIds": ["9f1c0c2e-3d5b-4a89-b1e2-7f6a8c0d4e21"],
  "lastName": "Alvarez"
}
```

```json Response theme={null}
{
  "data": {
    "furnished": {
      "consumerIdentitiesConnection": {
        "totalCount": 1,
        "pageInfo": { "hasNextPage": false, "endCursor": "YXJyYXljb25uZWN0aW9uOjA=" },
        "edges": [
          {
            "node": {
              "id": "Q29uc3VtZXJJZGVudGl0eU9iamVjdDphN2M1YTk2Yw==",
              "identifier": "a7c5a96c-9242-4fd6-b29c-f67c3f46b4ea",
              "firstName": "Maria",
              "lastName": "Alvarez",
              "documentCaptureEvents": [
                {
                  "documentType": "drivers_license",
                  "documentCaptureTimestamp": "2026-06-01",
                  "attestationEvent": { "furnishingEntity": { "name": "Acme Community Bank" } }
                }
              ]
            }
          }
        ]
      }
    }
  }
}
```

To fetch the next page, pass `pageInfo.endCursor` as `after`.

## Read one consumer and their records

Read a consumer by global ID with their addresses, emails and confirmed fraud
attributes. Nested lists take the same `filter`, `order`, `limit` and `offset`
arguments as root collections:

```graphql theme={null}
query ConsumerProfile($networkIds: [UUID!], $id: ID!) {
  furnished(networkIds: $networkIds) {
    node(id: $id) {
      ... on ConsumerIdentityObject {
        firstName
        lastName
        addressIdentities {
          line1
          city
          state
          zip
          addressCaptureEvents {
            isAddressCaptured
            addressCaptureTimestamp
          }
        }
        emailIdentities {
          emailAddress
        }
        fraudVerificationEvents(filter: { field: { confirmedFraudIndicator: { exact: true } } }) {
          fraudAttributeLabel
          fraudEventDate
        }
      }
    }
  }
}
```

```json Variables theme={null}
{
  "networkIds": ["9f1c0c2e-3d5b-4a89-b1e2-7f6a8c0d4e21"],
  "id": "Q29uc3VtZXJJZGVudGl0eU9iamVjdDphN2M1YTk2Yw=="
}
```

```json Response theme={null}
{
  "data": {
    "furnished": {
      "node": {
        "firstName": "Maria",
        "lastName": "Alvarez",
        "addressIdentities": [
          {
            "line1": "2150 W Fulton St",
            "city": "Chicago",
            "state": "IL",
            "zip": "60612",
            "addressCaptureEvents": [{ "isAddressCaptured": true, "addressCaptureTimestamp": "2026-06-01" }]
          }
        ],
        "emailIdentities": [{ "emailAddress": "maria.alvarez@example.com" }],
        "fraudVerificationEvents": [{ "fraudAttributeLabel": "device_id", "fraudEventDate": "2026-05-28" }]
      }
    }
  }
}
```

## Combine filters

Filters nest with `all`, `any` and `not`, and `object` filters on a related
object. `object` reaches the single objects a record points to, such as the
consumer an event belongs to, not lists of children; to filter by child
records, query the child collection and read its parent. Events have root
collections too, so this finds confirmed fraud attributes recorded since May
for consumers whose last name starts with "Al":

```graphql theme={null}
query RecentConfirmedFraud($networkIds: [UUID!], $since: String!) {
  furnished(networkIds: $networkIds) {
    fraudVerificationEvents(
      limit: 50
      order: [{ field: { fraudEventDate: DESC } }]
      filter: {
        all: [
          { field: { confirmedFraudIndicator: { exact: true } } }
          { field: { fraudEventDate: { gte: $since } } }
          { object: { consumerIdentity: { field: { lastName: { iStartsWith: "al" } } } } }
        ]
      }
    ) {
      fraudAttributeLabel
      fraudEventDate
      consumerIdentity {
        identifier
        firstName
        lastName
      }
    }
  }
}
```

```json Variables theme={null}
{
  "networkIds": ["9f1c0c2e-3d5b-4a89-b1e2-7f6a8c0d4e21"],
  "since": "2026-05-01"
}
```

## Related

> **[GraphQL API](https://docs.solo.one/api-overview/graphql/overview.md)**
>
> Endpoint, authentication, scope and billing.

> **[Furnishing with GraphQL](https://docs.solo.one/api-overview/graphql/furnishing.md)**
>
> Write identities and nested records.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.