Auto-indexing service and GraphQL API for AT Protocol Records quickslice.slices.network/
atproto gleam graphql

docs: document built-in fields and isNull filter

Add Built-in Fields section documenting uri, cid, did, collection,
actorHandle, and indexedAt fields available on all record nodes.

Add isNull filter operator to the table and explain that ref fields
only support isNull for presence/absence checks.

+59
+59
docs/guides/queries.md
··· 30 - `pageInfo`: Pagination metadata 31 - `totalCount`: Total number of matching records 32 33 ## Filtering 34 35 Use the `where` argument to filter records: ··· 59 | `lt` | Less than | `{ createdAt: { lt: "2025-06-01T00:00:00Z" } }` | 60 | `gte` | Greater than or equal | `{ position: { gte: 1 } }` | 61 | `lte` | Less than or equal | `{ position: { lte: 10 } }` | 62 63 ### Multiple Conditions 64
··· 30 - `pageInfo`: Pagination metadata 31 - `totalCount`: Total number of matching records 32 33 + ## Built-in Fields 34 + 35 + Every record includes these fields automatically: 36 + 37 + | Field | Description | 38 + |-------|-------------| 39 + | `uri` | The AT-URI of the record | 40 + | `cid` | Content identifier (hash) | 41 + | `did` | Author's decentralized identifier | 42 + | `collection` | The Lexicon collection (e.g., `app.bsky.feed.post`) | 43 + | `actorHandle` | Author's handle (e.g., `alice.bsky.social`) | 44 + | `indexedAt` | When Quickslice indexed the record | 45 + 46 + The `actorHandle` field resolves the author's DID to their current handle, useful for display without a separate join: 47 + 48 + ```graphql 49 + query { 50 + xyzStatusphereStatus(first: 10) { 51 + edges { 52 + node { 53 + status 54 + actorHandle 55 + } 56 + } 57 + } 58 + } 59 + ``` 60 + 61 ## Filtering 62 63 Use the `where` argument to filter records: ··· 87 | `lt` | Less than | `{ createdAt: { lt: "2025-06-01T00:00:00Z" } }` | 88 | `gte` | Greater than or equal | `{ position: { gte: 1 } }` | 89 | `lte` | Less than or equal | `{ position: { lte: 10 } }` | 90 + | `isNull` | Null check | `{ replyParent: { isNull: true } }` | 91 + 92 + ### Filtering Ref Fields 93 + 94 + Reference fields (AT-URIs or strong refs pointing to other records) only support `isNull`. Use it to find records with or without a reference: 95 + 96 + ```graphql 97 + query { 98 + # Find root posts (no reply parent) 99 + appBskyFeedPost(where: { replyParent: { isNull: true } }) { 100 + edges { 101 + node { 102 + text 103 + } 104 + } 105 + } 106 + } 107 + ``` 108 + 109 + ```graphql 110 + query { 111 + # Find replies only 112 + appBskyFeedPost(where: { replyParent: { isNull: false } }) { 113 + edges { 114 + node { 115 + text 116 + } 117 + } 118 + } 119 + } 120 + ``` 121 122 ### Multiple Conditions 123