Gleam Lustre Fullstack Atproto Demo App w/Slices.Network GraphQL API
at main 682 lines 18 kB view raw
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