···23232424### Slice Management
25252626-#### `network.slices.slice.listRecords`
2626+#### `network.slices.slice.getRecords`
27272828-List all slices.
2828+Get all slices.
29293030**Method**: GET
3131···69697070- `uri` (string, required): AT Protocol URI of the slice
71717272-**Response**: Single record object (same structure as listRecords item)
7272+**Response**: Single record object (same structure as getRecords item)
73737474#### `network.slices.slice.createRecord`
7575···302302For each collection in your slice, the following endpoints are automatically
303303generated:
304304305305-### `[collection].listRecords`
305305+### `[collection].getRecords`
306306307307-List records in a collection.
307307+Get records in a collection.
308308309309**Method**: GET
310310···328328- `slice` (string, required): Slice URI
329329- `uri` (string, required): Record URI
330330331331-### `[collection].searchRecords`
331331+### `[collection].countRecords`
332332333333-Search within a collection.
333333+Count records in a collection.
334334335335**Method**: GET
336336337337**Parameters**:
338338339339- `slice` (string, required): Slice URI
340340-- `query` (string, required): Search query
341341-- `field` (string, optional): Specific field to search
342342-- `limit` (number, optional): Maximum results
343343-- `cursor` (string, optional): Pagination cursor
344344-- `sort` (string, optional): Sort specification
340340+- `author` (string, optional): Filter by author DID
341341+- `authors` (string[], optional): Filter by multiple DIDs
342342+- Other filter parameters (no limit/cursor)
343343+344344+**Response**:
345345+346346+```json
347347+{
348348+ "count": 150
349349+}
350350+```
345351346352### `[collection].createRecord`
347353···403409404410## Lexicon Management
405411406406-### `network.slices.lexicon.listRecords`
412412+### `network.slices.lexicon.getRecords`
407413408408-List lexicons in a slice.
414414+Get lexicons in a slice.
409415410416**Method**: GET
411417412412-**Parameters**: Same as collection.listRecords
418418+**Parameters**: Same as collection.getRecords
419419+420420+### `network.slices.lexicon.countRecords`
421421+422422+Count lexicons in a slice.
423423+424424+**Method**: GET
425425+426426+**Parameters**: Same as collection.getRecords (except limit and cursor)
427427+428428+**Response**:
429429+430430+```json
431431+{
432432+ "count": 10
433433+}
434434+```
413435414436### `network.slices.lexicon.createRecord`
415437···528550```javascript
529551let cursor = undefined;
530552do {
531531- const response = await fetch(`/xrpc/collection.listRecords?cursor=${cursor}`);
553553+ const response = await fetch(`/xrpc/collection.getRecords?cursor=${cursor}`);
532554 const data = await response.json();
533555 // Process records
534556 cursor = data.cursor;
+3-4
docs/concepts.md
···91919292Both primary and external collections support the same operations:
93939494-- `*.listRecords` - List with pagination and filtering
9494+- `*.getRecords` - Get records with pagination, filtering, and search
9595- `*.getRecord` - Get single record by URI
9696- `*.createRecord` - Create new record
9797- `*.updateRecord` - Update existing record
9898- `*.deleteRecord` - Remove record
9999-- `*.searchRecords` - Search within collection
9999+- `*.countRecords` - Count records with filtering
100100101101The key difference is conceptual: primary collections are "native" to your
102102slice's domain, while external collections are imported from other namespaces.
···254254const client = new AtProtoClient(apiUrl, sliceUri, oauthClient);
255255256256// Use nested structure matching lexicons
257257-await client.com.example.post.listRecords();
258258-await client.network.slices.slice.stats();
257257+await client.com.example.post.getRecords();
259258await client.app.bsky.actor.profile.getRecord({ uri });
260259```
261260
+2-2
docs/getting-started.md
···161161 "at://did:plc:your-did/network.slices.slice/your-slice-id",
162162);
163163164164-// List posts
165165-const posts = await client.com.example.post.listRecords();
164164+// Get posts
165165+const posts = await client.com.example.post.getRecords();
166166167167// Create a post
168168const newPost = await client.com.example.post.createRecord({
+5-5
docs/sdk-usage.md
···88project:
991010```typescript
1111-import { AtProtoClient } from "./generated-client.ts";
1111+import { AtProtoClient } from "./generated_client.ts";
1212import { OAuthClient } from "@slices/oauth";
1313```
1414···1919```typescript
2020const client = new AtProtoClient(
2121 "https://api.your-domain.com",
2222- "at://did:plc:abc/network.slices.slice/your-slice-id",
2222+ "at://did:plc:abc/network.slices.slice/your-slice-rkey",
2323);
24242525// Read operations work without auth
···3737 clientSecret: "your-client-secret",
3838 authBaseUrl: "https://aip.your-domain.com",
3939 redirectUri: "https://your-app.com/oauth/callback",
4040- scopes: ["atproto:atproto", "atproto:transition:generic"],
4040+ scopes: ["atproto", "transition:generic"],
4141});
42424343// Initialize API client with OAuth
4444const client = new AtProtoClient(
4545 "https://api.your-domain.com",
4646- "at://did:plc:abc/network.slices.slice/your-slice-id",
4646+ "at://did:plc:abc/network.slices.slice/your-slice-rekey",
4747 oauthClient,
4848);
4949```
···640640 let cursor: string | undefined;
641641642642 do {
643643- const batch = await client.com.example.post.listRecords({
643643+ const batch = await client.com.example.post.getRecords({
644644 limit: 100,
645645 cursor,
646646 });