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 30 - `pageInfo`: Pagination metadata 31 31 - `totalCount`: Total number of matching records 32 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 + 33 61 ## Filtering 34 62 35 63 Use the `where` argument to filter records: ··· 59 87 | `lt` | Less than | `{ createdAt: { lt: "2025-06-01T00:00:00Z" } }` | 60 88 | `gte` | Greater than or equal | `{ position: { gte: 1 } }` | 61 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 + ``` 62 121 63 122 ### Multiple Conditions 64 123