Gleam Lustre Fullstack Atproto Demo App w/Slices.Network GraphQL API
1"""
2Indicates that an Input Object is a OneOf Input Object (and thus requires exactly one of its field be provided)
3"""
4directive @oneOf on INPUT_OBJECT
5
6"""
7Provides a scalar specification URL for specifying the behavior of custom scalar types.
8"""
9directive @specifiedBy(
10 """URL that specifies the behavior of this scalar."""
11 url: String!
12) on SCALAR
13
14input AggregationOrderBy {
15 count: SortDirection
16}
17
18type AppBskyActorProfile {
19 id: ID!
20 uri: String!
21 cid: String!
22 did: String!
23 indexedAt: String!
24 actorHandle: String
25 avatar: Blob
26 banner: Blob
27 createdAt: String
28 description: String
29 displayName: String
30 joinedViaStarterPack: JSON
31 labels: JSON
32 pinnedPost: JSON
33 pronouns: String
34 website: String
35 orgAtmosphereconfProfile: OrgAtmosphereconfProfile
36 orgAtmosphereconfProfiles(limit: Int): [OrgAtmosphereconfProfile!]!
37 orgAtmosphereconfProfilesCount: Int!
38 appBskyActorProfiles(limit: Int): [AppBskyActorProfile!]!
39 appBskyActorProfilesCount: Int!
40}
41
42type AppBskyActorProfileAggregated {
43 avatar: JSON
44 banner: JSON
45 createdAt: JSON
46 description: JSON
47 displayName: JSON
48 joinedViaStarterPack: JSON
49 labels: JSON
50 pinnedPost: JSON
51 pronouns: JSON
52 website: JSON
53 count: Int!
54}
55
56type AppBskyActorProfileConnection {
57 totalCount: Int!
58 pageInfo: PageInfo!
59 edges: [AppBskyActorProfileEdge!]!
60 nodes: [AppBskyActorProfile!]!
61}
62
63type AppBskyActorProfileEdge {
64 node: AppBskyActorProfile!
65 cursor: String!
66}
67
68enum AppBskyActorProfileGroupByField {
69 indexedAt
70 avatar
71 banner
72 createdAt
73 description
74 displayName
75 joinedViaStarterPack
76 labels
77 pinnedPost
78 pronouns
79 website
80}
81
82input AppBskyActorProfileGroupByFieldInput {
83 field: AppBskyActorProfileGroupByField!
84 interval: DateInterval
85}
86
87input AppBskyActorProfileInput {
88 avatar: JSON
89 banner: JSON
90 createdAt: String
91 description: String
92 displayName: String
93 joinedViaStarterPack: JSON
94 labels: JSON
95 pinnedPost: JSON
96 pronouns: String
97 website: String
98}
99
100input AppBskyActorProfileSortFieldInput {
101 field: AppBskyActorProfileGroupByField!
102 direction: SortDirection
103}
104
105input AppBskyActorProfileWhereInput {
106 indexedAt: DateTimeFilter
107 uri: StringFilter
108 cid: StringFilter
109 did: StringFilter
110 collection: StringFilter
111 actorHandle: StringFilter
112 avatar: StringFilter
113 banner: StringFilter
114 createdAt: StringFilter
115 description: StringFilter
116 displayName: StringFilter
117 joinedViaStarterPack: StringFilter
118 labels: StringFilter
119 pinnedPost: StringFilter
120 pronouns: StringFilter
121 website: StringFilter
122 json: StringFilter
123 and: [AppBskyActorProfileWhereInput]
124 or: [AppBskyActorProfileWhereInput]
125}
126
127type Blob {
128 ref: String!
129 mimeType: String!
130 size: Int!
131
132 """
133 Generate CDN URL for the blob with the specified preset (avatar, banner, feed_thumbnail, feed_fullsize)
134 """
135 url(preset: String): String!
136}
137
138type BlobUploadResponse {
139 blob: Blob!
140}
141
142type CollectionSummary {
143 collection: String!
144 estimatedRepos: Int!
145 isExternal: Boolean!
146}
147
148type ComAtprotoRepoStrongRef {
149 id: ID!
150 did: String!
151 indexedAt: String!
152 actorHandle: String
153 cid: String!
154 uri: String!
155 orgAtmosphereconfProfile: OrgAtmosphereconfProfile
156 appBskyActorProfile: AppBskyActorProfile
157 orgAtmosphereconfProfiles(limit: Int): [OrgAtmosphereconfProfile!]!
158 orgAtmosphereconfProfilesCount: Int!
159 appBskyActorProfiles(limit: Int): [AppBskyActorProfile!]!
160 appBskyActorProfilesCount: Int!
161}
162
163type ComAtprotoRepoStrongRefAggregated {
164 cid: JSON
165 uri: JSON
166 count: Int!
167}
168
169type ComAtprotoRepoStrongRefConnection {
170 totalCount: Int!
171 pageInfo: PageInfo!
172 edges: [ComAtprotoRepoStrongRefEdge!]!
173 nodes: [ComAtprotoRepoStrongRef!]!
174}
175
176type ComAtprotoRepoStrongRefEdge {
177 node: ComAtprotoRepoStrongRef!
178 cursor: String!
179}
180
181enum ComAtprotoRepoStrongRefGroupByField {
182 indexedAt
183 cid
184 uri
185}
186
187input ComAtprotoRepoStrongRefGroupByFieldInput {
188 field: ComAtprotoRepoStrongRefGroupByField!
189 interval: DateInterval
190}
191
192input ComAtprotoRepoStrongRefInput {
193 cid: String!
194 uri: String!
195}
196
197input ComAtprotoRepoStrongRefSortFieldInput {
198 field: ComAtprotoRepoStrongRefGroupByField!
199 direction: SortDirection
200}
201
202input ComAtprotoRepoStrongRefWhereInput {
203 indexedAt: DateTimeFilter
204 did: StringFilter
205 collection: StringFilter
206 actorHandle: StringFilter
207 cid: StringFilter
208 uri: StringFilter
209 json: StringFilter
210 and: [ComAtprotoRepoStrongRefWhereInput]
211 or: [ComAtprotoRepoStrongRefWhereInput]
212}
213
214type CommunityLexiconLocationHthree {
215 name: String
216 value: String
217}
218
219type CommunityLexiconLocationHthreeAggregated {
220 name: JSON
221 value: JSON
222 count: Int!
223}
224
225type CommunityLexiconLocationHthreeConnection {
226 totalCount: Int!
227 pageInfo: PageInfo!
228 edges: [CommunityLexiconLocationHthreeEdge!]!
229 nodes: [CommunityLexiconLocationHthree!]!
230}
231
232type CommunityLexiconLocationHthreeEdge {
233 node: CommunityLexiconLocationHthree!
234 cursor: String!
235}
236
237enum CommunityLexiconLocationHthreeGroupByField {
238 indexedAt
239 name
240 value
241}
242
243input CommunityLexiconLocationHthreeGroupByFieldInput {
244 field: CommunityLexiconLocationHthreeGroupByField!
245 interval: DateInterval
246}
247
248input CommunityLexiconLocationHthreeInput {
249 name: String
250 value: String!
251}
252
253input CommunityLexiconLocationHthreeSortFieldInput {
254 field: CommunityLexiconLocationHthreeGroupByField!
255 direction: SortDirection
256}
257
258input CommunityLexiconLocationHthreeWhereInput {
259 indexedAt: DateTimeFilter
260 uri: StringFilter
261 cid: StringFilter
262 did: StringFilter
263 collection: StringFilter
264 actorHandle: StringFilter
265 name: StringFilter
266 value: StringFilter
267 json: StringFilter
268 and: [CommunityLexiconLocationHthreeWhereInput]
269 or: [CommunityLexiconLocationHthreeWhereInput]
270}
271
272enum DateInterval {
273 second
274 minute
275 hour
276 day
277 week
278 month
279 quarter
280 year
281}
282
283input DateTimeFilter {
284 eq: String
285 gt: String
286 gte: String
287 lt: String
288 lte: String
289}
290
291type DeleteSliceRecordsOutput {
292 message: String!
293 recordsDeleted: Int!
294 actorsDeleted: Int!
295}
296
297type JetstreamLogEntry {
298 id: String!
299 createdAt: String!
300 logType: String!
301 jobId: String
302 userDid: String
303 sliceUri: String
304 level: String!
305 message: String!
306 metadata: JSON
307}
308
309scalar JSON
310
311type Mutation {
312 """Sync user collections for a given DID"""
313 syncUserCollections(did: String!): SyncResult!
314
315 """Create a new org.atmosphereconf.profile record"""
316 createOrgAtmosphereconfProfile(input: OrgAtmosphereconfProfileInput!, rkey: String): OrgAtmosphereconfProfile!
317
318 """Update a org.atmosphereconf.profile record"""
319 updateOrgAtmosphereconfProfile(rkey: String!, input: OrgAtmosphereconfProfileInput!): OrgAtmosphereconfProfile!
320
321 """Delete a org.atmosphereconf.profile record"""
322 deleteOrgAtmosphereconfProfile(rkey: String!): OrgAtmosphereconfProfile!
323
324 """Create a new community.lexicon.location.hthree record"""
325 createCommunityLexiconLocationHthree(input: CommunityLexiconLocationHthreeInput!, rkey: String): CommunityLexiconLocationHthree!
326
327 """Update a community.lexicon.location.hthree record"""
328 updateCommunityLexiconLocationHthree(rkey: String!, input: CommunityLexiconLocationHthreeInput!): CommunityLexiconLocationHthree!
329
330 """Delete a community.lexicon.location.hthree record"""
331 deleteCommunityLexiconLocationHthree(rkey: String!): CommunityLexiconLocationHthree!
332
333 """Create a new app.bsky.actor.profile record"""
334 createAppBskyActorProfile(input: AppBskyActorProfileInput!, rkey: String): AppBskyActorProfile!
335
336 """Update a app.bsky.actor.profile record"""
337 updateAppBskyActorProfile(rkey: String!, input: AppBskyActorProfileInput!): AppBskyActorProfile!
338
339 """Delete a app.bsky.actor.profile record"""
340 deleteAppBskyActorProfile(rkey: String!): AppBskyActorProfile!
341
342 """Create a new com.atproto.repo.strongRef record"""
343 createComAtprotoRepoStrongRef(input: ComAtprotoRepoStrongRefInput!, rkey: String): ComAtprotoRepoStrongRef!
344
345 """Update a com.atproto.repo.strongRef record"""
346 updateComAtprotoRepoStrongRef(rkey: String!, input: ComAtprotoRepoStrongRefInput!): ComAtprotoRepoStrongRef!
347
348 """Delete a com.atproto.repo.strongRef record"""
349 deleteComAtprotoRepoStrongRef(rkey: String!): ComAtprotoRepoStrongRef!
350
351 """Start a sync job to backfill collections from the ATProto relay"""
352 startSync(slice: String, collections: [String], externalCollections: [String], repos: [String], limitPerRepo: Int, skipValidation: Boolean, maxRepos: Int): StartSyncOutput!
353
354 """Cancel a pending or running sync job"""
355 cancelJob(jobId: String!): Boolean!
356
357 """Delete a sync job from the database"""
358 deleteJob(id: ID!): ID
359
360 """Upload a blob to the user's AT Protocol repository"""
361 uploadBlob(data: String!, mimeType: String!): BlobUploadResponse!
362
363 """Register a new OAuth client for a slice"""
364 createOAuthClient(sliceUri: String!, clientName: String!, redirectUris: [String!]!, scope: String!, clientUri: String, logoUri: String, tosUri: String, policyUri: String): OAuthClient!
365
366 """Update an OAuth client"""
367 updateOAuthClient(clientId: String!, clientName: String, redirectUris: [String], scope: String, clientUri: String, logoUri: String, tosUri: String, policyUri: String): OAuthClient!
368
369 """Delete an OAuth client"""
370 deleteOAuthClient(clientId: String!): Boolean!
371
372 """
373 Delete all records and actors from a slice index. Requires authentication and slice ownership.
374 """
375 deleteSliceRecords(slice: String): DeleteSliceRecordsOutput!
376}
377
378type OAuthClient {
379 clientId: String!
380 clientSecret: String
381 clientName: String!
382 redirectUris: [String!]!
383 grantTypes: [String!]!
384 responseTypes: [String!]!
385 scope: String
386 clientUri: String
387 logoUri: String
388 tosUri: String
389 policyUri: String
390 createdAt: String!
391 createdByDid: String!
392}
393
394type OrgAtmosphereconfProfile {
395 id: ID!
396 uri: String!
397 cid: String!
398 did: String!
399 indexedAt: String!
400 actorHandle: String
401 avatar: Blob
402 createdAt: String
403 description: String
404 displayName: String
405 homeTown: CommunityLexiconLocationHthree
406 interests: [String]
407 appBskyActorProfile: AppBskyActorProfile
408 orgAtmosphereconfProfiles(limit: Int): [OrgAtmosphereconfProfile!]!
409 orgAtmosphereconfProfilesCount: Int!
410 appBskyActorProfiles(limit: Int): [AppBskyActorProfile!]!
411 appBskyActorProfilesCount: Int!
412}
413
414type OrgAtmosphereconfProfileAggregated {
415 avatar: JSON
416 createdAt: JSON
417 description: JSON
418 displayName: JSON
419 homeTown: JSON
420 interests: JSON
421 count: Int!
422}
423
424type OrgAtmosphereconfProfileConnection {
425 totalCount: Int!
426 pageInfo: PageInfo!
427 edges: [OrgAtmosphereconfProfileEdge!]!
428 nodes: [OrgAtmosphereconfProfile!]!
429}
430
431type OrgAtmosphereconfProfileEdge {
432 node: OrgAtmosphereconfProfile!
433 cursor: String!
434}
435
436enum OrgAtmosphereconfProfileGroupByField {
437 indexedAt
438 avatar
439 createdAt
440 description
441 displayName
442 homeTown
443 interests
444}
445
446input OrgAtmosphereconfProfileGroupByFieldInput {
447 field: OrgAtmosphereconfProfileGroupByField!
448 interval: DateInterval
449}
450
451input OrgAtmosphereconfProfileInput {
452 avatar: JSON
453 createdAt: String
454 description: String
455 displayName: String
456 homeTown: JSON
457 interests: [String]
458}
459
460input OrgAtmosphereconfProfileSortFieldInput {
461 field: OrgAtmosphereconfProfileGroupByField!
462 direction: SortDirection
463}
464
465input OrgAtmosphereconfProfileWhereInput {
466 indexedAt: DateTimeFilter
467 uri: StringFilter
468 cid: StringFilter
469 did: StringFilter
470 collection: StringFilter
471 actorHandle: StringFilter
472 avatar: StringFilter
473 createdAt: StringFilter
474 description: StringFilter
475 displayName: StringFilter
476 homeTown: StringFilter
477 interests: StringFilter
478 json: StringFilter
479 and: [OrgAtmosphereconfProfileWhereInput]
480 or: [OrgAtmosphereconfProfileWhereInput]
481}
482
483type PageInfo {
484 hasNextPage: Boolean!
485 hasPreviousPage: Boolean!
486 startCursor: String
487 endCursor: String
488}
489
490type Query {
491 """Query org.atmosphereconf.profile records"""
492 orgAtmosphereconfProfiles(first: Int, after: String, last: Int, before: String, sortBy: [OrgAtmosphereconfProfileSortFieldInput], where: OrgAtmosphereconfProfileWhereInput): OrgAtmosphereconfProfileConnection!
493
494 """
495 Aggregated query for org.atmosphereconf.profile records with GROUP BY support
496 """
497 orgAtmosphereconfProfilesAggregated(groupBy: [OrgAtmosphereconfProfileGroupByFieldInput!], where: OrgAtmosphereconfProfileWhereInput, orderBy: AggregationOrderBy, limit: Int): [OrgAtmosphereconfProfileAggregated!]!
498
499 """Query community.lexicon.location.hthree records"""
500 communityLexiconLocationHthrees(first: Int, after: String, last: Int, before: String, sortBy: [CommunityLexiconLocationHthreeSortFieldInput], where: CommunityLexiconLocationHthreeWhereInput): CommunityLexiconLocationHthreeConnection!
501
502 """
503 Aggregated query for community.lexicon.location.hthree records with GROUP BY support
504 """
505 communityLexiconLocationHthreesAggregated(groupBy: [CommunityLexiconLocationHthreeGroupByFieldInput!], where: CommunityLexiconLocationHthreeWhereInput, orderBy: AggregationOrderBy, limit: Int): [CommunityLexiconLocationHthreeAggregated!]!
506
507 """Query app.bsky.actor.profile records"""
508 appBskyActorProfiles(first: Int, after: String, last: Int, before: String, sortBy: [AppBskyActorProfileSortFieldInput], where: AppBskyActorProfileWhereInput): AppBskyActorProfileConnection!
509
510 """
511 Aggregated query for app.bsky.actor.profile records with GROUP BY support
512 """
513 appBskyActorProfilesAggregated(groupBy: [AppBskyActorProfileGroupByFieldInput!], where: AppBskyActorProfileWhereInput, orderBy: AggregationOrderBy, limit: Int): [AppBskyActorProfileAggregated!]!
514
515 """Query com.atproto.repo.strongRef records"""
516 comAtprotoRepoStrongRefs(first: Int, after: String, last: Int, before: String, sortBy: [ComAtprotoRepoStrongRefSortFieldInput], where: ComAtprotoRepoStrongRefWhereInput): ComAtprotoRepoStrongRefConnection!
517
518 """
519 Aggregated query for com.atproto.repo.strongRef records with GROUP BY support
520 """
521 comAtprotoRepoStrongRefsAggregated(groupBy: [ComAtprotoRepoStrongRefGroupByFieldInput!], where: ComAtprotoRepoStrongRefWhereInput, orderBy: AggregationOrderBy, limit: Int): [ComAtprotoRepoStrongRefAggregated!]!
522
523 """
524 Get logs from the Jetstream real-time indexing service, optionally filtered by slice
525 """
526 jetstreamLogs(slice: String, limit: Int): [JetstreamLogEntry!]!
527
528 """Get status of a specific sync job"""
529 syncJob(jobId: String!): SyncJob
530
531 """Get sync job history for a slice"""
532 syncJobs(slice: String, limit: Int): [SyncJob!]!
533
534 """Get logs for a specific sync job"""
535 syncJobLogs(jobId: String!, limit: Int): [JetstreamLogEntry!]!
536
537 """Get summary of repos that would be synced based on collection filters"""
538 getSyncSummary(slice: String!, collections: [String], externalCollections: [String], repos: [String]): SyncSummary!
539
540 """
541 Get sparkline data for multiple slices showing record indexing activity over time
542 """
543 sparklines(slices: [String!]!, interval: String, duration: String): [SliceSparkline!]!
544
545 """
546 Query records across all collections in a slice with filtering and pagination.
547 Provide either sliceUri or both actorHandle and rkey.
548 """
549 sliceRecords(sliceUri: String, actorHandle: String, rkey: String, first: Int, after: String, where: SliceRecordsWhereInput): SliceRecordsConnection!
550
551 """Get all OAuth clients for a slice"""
552 oauthClients(slice: String): [OAuthClient!]!
553}
554
555type SliceRecord {
556 uri: String!
557 cid: String!
558 did: String!
559 collection: String!
560 value: String!
561 indexedAt: String!
562}
563
564type SliceRecordEdge {
565 node: SliceRecord!
566 cursor: String!
567}
568
569type SliceRecordsConnection {
570 totalCount: Int!
571 edges: [SliceRecordEdge!]!
572 pageInfo: PageInfo!
573}
574
575input SliceRecordsWhereInput {
576 collection: StringFilter
577 did: StringFilter
578 uri: StringFilter
579 cid: StringFilter
580 indexedAt: DateTimeFilter
581 json: StringFilter
582 or: [SliceRecordsWhereInput]
583}
584
585type SliceSparkline {
586 sliceUri: String!
587 points: [SparklinePoint!]!
588}
589
590enum SortDirection {
591 asc
592 desc
593}
594
595type SparklinePoint {
596 timestamp: String!
597 count: Int!
598}
599
600type StartSyncOutput {
601 jobId: String!
602 message: String!
603}
604
605input StringFilter {
606 eq: String
607 in: [String]
608 contains: String
609 fuzzy: String
610 gt: String
611 gte: String
612 lt: String
613 lte: String
614}
615
616type Subscription {
617 """Subscribe to org.atmosphereconf.profile record creation events"""
618 orgAtmosphereconfProfileCreated: OrgAtmosphereconfProfile!
619
620 """Subscribe to org.atmosphereconf.profile record update events"""
621 orgAtmosphereconfProfileUpdated: OrgAtmosphereconfProfile!
622
623 """
624 Subscribe to org.atmosphereconf.profile record deletion events. Returns the URI of deleted records.
625 """
626 orgAtmosphereconfProfileDeleted: String!
627
628 """Subscribe to app.bsky.actor.profile record creation events"""
629 appBskyActorProfileCreated: AppBskyActorProfile!
630
631 """Subscribe to app.bsky.actor.profile record update events"""
632 appBskyActorProfileUpdated: AppBskyActorProfile!
633
634 """
635 Subscribe to app.bsky.actor.profile record deletion events. Returns the URI of deleted records.
636 """
637 appBskyActorProfileDeleted: String!
638
639 """Subscribe to new Jetstream log entries, optionally filtered by slice"""
640 jetstreamLogsCreated(slice: String): JetstreamLogEntry!
641
642 """Subscribe to sync job status updates"""
643 syncJobUpdated(jobId: String, slice: String): SyncJob!
644}
645
646type SyncJob {
647 id: ID!
648 jobId: String!
649 sliceUri: String!
650 status: String!
651 createdAt: String!
652 startedAt: String
653 completedAt: String
654 result: SyncJobResult
655 error: String
656 retryCount: Int!
657}
658
659type SyncJobResult {
660 success: Boolean!
661 totalRecords: Int!
662 collectionsSynced: [String!]!
663 reposProcessed: Int!
664 message: String!
665}
666
667type SyncResult {
668 success: Boolean!
669 reposProcessed: Int!
670 recordsSynced: Int!
671 timedOut: Boolean!
672 message: String!
673}
674
675type SyncSummary {
676 totalRepos: Int!
677 cappedRepos: Int!
678 wouldBeCapped: Boolean!
679 appliedLimit: Int!
680 collectionsSummary: [CollectionSummary!]!
681}
682