forked from ChilliCream/graphql-workshop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
schema.graphql
379 lines (334 loc) · 8.65 KB
/
schema.graphql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
"The node interface is implemented by entities that have a gloabl unique identifier."
interface Node {
id: ID!
}
type AddSessionPayload {
clientMutationId: String
errors: [UserError!]!
session: Session
}
type AddSpeakerPayload {
clientMutationId: String
errors: [UserError!]!
speaker: Speaker
}
type AddTrackPayload {
clientMutationId: String
errors: [UserError!]!
track: Track
}
type Attendee implements Node {
emailAddress: String
firstName: String!
id: ID!
lastName: String!
sessions: [Session!]!
userName: String!
}
"A connection to a list of items."
type AttendeeConnection {
"A list of edges."
edges: [AttendeeEdge!]
"A flattened list of the nodes."
nodes: [Attendee]
"Information to aid in pagination."
pageInfo: PageInfo!
totalCount: Int!
}
"An edge in a connection."
type AttendeeEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Attendee
}
type CheckInAttendeePayload {
attendee: Session
clientMutationId: String
errors: [UserError!]!
}
type ModifySpeakerPayload {
clientMutationId: String
errors: [UserError!]!
speaker: Speaker
}
type Mutation {
addSession(input: AddSessionInput!): AddSessionPayload!
addSpeaker(input: AddSpeakerInput!): AddSpeakerPayload!
addTrack(input: AddTrackInput!): AddTrackPayload!
checkInAttendee(input: CheckInAttendeeInput!): CheckInAttendeePayload!
modifySpeaker(input: ModifySpeakerInput!): ModifySpeakerPayload!
registerAttendee(input: RegisterAttendeeInput!): RegisterAttendeePayload!
renameTrack(input: RenameTrackInput!): RenameTrackPayload!
scheduleSession(input: ScheduleSessionInput!): ScheduleSessionPayload!
}
"Information about pagination in a connection."
type PageInfo {
"When paginating forwards, the cursor to continue."
endCursor: String
"Indicates whether more edges exist following the set defined by the clients arguments."
hasNextPage: Boolean!
"Indicates whether more edges exist prior the set defined by the clients arguments."
hasPreviousPage: Boolean!
"When paginating backwards, the cursor to continue."
startCursor: String
}
type Query {
attendeeById(id: ID!): Attendee!
attendeesAsync(after: String before: String first: PaginationAmount last: PaginationAmount): AttendeeConnection
attendeesById(ids: [ID]): [Attendee!]!
node(id: ID!): Node
sessionById(id: ID!): Session!
sessions(after: String before: String first: PaginationAmount last: PaginationAmount order_by: SessionSort where: SessionFilter): SessionConnection
sessionsById(ids: [ID]): [Session!]!
speakerById(id: ID!): Speaker!
speakers(after: String before: String first: PaginationAmount last: PaginationAmount): SpeakerConnection
speakersById(ids: [ID]): [Speaker!]!
trackById(id: ID!): Track!
trackByName(name: String!): Track!
trackByNames(names: [String!]!): [Track!]!
tracks(after: String before: String first: PaginationAmount last: PaginationAmount): TrackConnection
}
type RegisterAttendeePayload {
attendee: Attendee
clientMutationId: String
errors: [UserError!]!
}
type RenameTrackPayload {
clientMutationId: String
errors: [UserError!]!
track: Track
}
type ScheduleSessionPayload {
clientMutationId: String
errors: [UserError!]!
session: Session
speakers: [Speaker!]
track: Track
}
type Session implements Node {
abstract: String
attendees: [Attendee!]!
duration: TimeSpan!
endTime: DateTime
id: ID!
speakers: [Speaker!]!
startTime: DateTime
title: String!
track: Track
trackId: ID
}
type SessionAttendeeCheckIn {
attendee: Attendee!
attendeeId: ID!
checkInCount: Int!
sessionId: ID!
}
"A connection to a list of items."
type SessionConnection {
"A list of edges."
edges: [SessionEdge!]
"A flattened list of the nodes."
nodes: [Session]
"Information to aid in pagination."
pageInfo: PageInfo!
totalCount: Int!
}
"An edge in a connection."
type SessionEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Session
}
type Speaker implements Node {
bio: String
id: ID!
name: String!
sessions: [Session!]!
webSite: String
}
"A connection to a list of items."
type SpeakerConnection {
"A list of edges."
edges: [SpeakerEdge!]
"A flattened list of the nodes."
nodes: [Speaker]
"Information to aid in pagination."
pageInfo: PageInfo!
totalCount: Int!
}
"An edge in a connection."
type SpeakerEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Speaker
}
type Subscription {
onAttendeeCheckedInAsync(sessionId: ID!): SessionAttendeeCheckIn!
onSessionScheduled: Session!
}
type Track implements Node {
id: ID!
name: String!
sessions: [Session!]!
}
"A connection to a list of items."
type TrackConnection {
"A list of edges."
edges: [TrackEdge!]
"A flattened list of the nodes."
nodes: [Track]
"Information to aid in pagination."
pageInfo: PageInfo!
totalCount: Int!
}
"An edge in a connection."
type TrackEdge {
"A cursor for use in pagination."
cursor: String!
"The item at the end of the edge."
node: Track
}
type UserError {
code: String!
message: String!
}
input AddSessionInput {
abstract: String
clientMutationId: String
speakerIds: [ID]
title: String!
}
input AddSpeakerInput {
bio: String
clientMutationId: String
name: String!
webSite: String
}
input AddTrackInput {
clientMutationId: String
name: String!
}
input CheckInAttendeeInput {
attendeeId: ID!
clientMutationId: String
sessionId: ID!
}
input ModifySpeakerInput {
bio: String
clientMutationId: String
id: ID!
name: String
webSite: String
}
input RegisterAttendeeInput {
clientMutationId: String
emailAddress: String!
firstName: String!
lastName: String!
userName: String!
}
input RenameTrackInput {
clientMutationId: String
id: ID!
name: String!
}
input ScheduleSessionInput {
clientMutationId: String
endTime: DateTime!
sessionId: ID!
startTime: DateTime!
trackId: ID!
}
input SessionFilter {
abstract: String
abstract_contains: String
abstract_ends_with: String
abstract_in: [String]
abstract_not: String
abstract_not_contains: String
abstract_not_ends_with: String
abstract_not_in: [String]
abstract_not_starts_with: String
abstract_starts_with: String
AND: [SessionFilter!]
duration: TimeSpan
duration_gt: TimeSpan
duration_gte: TimeSpan
duration_in: [TimeSpan!]
duration_lt: TimeSpan
duration_lte: TimeSpan
duration_not: TimeSpan
duration_not_gt: TimeSpan
duration_not_gte: TimeSpan
duration_not_in: [TimeSpan!]
duration_not_lt: TimeSpan
duration_not_lte: TimeSpan
endTime: DateTime
endTime_gt: DateTime
endTime_gte: DateTime
endTime_in: [DateTime]
endTime_lt: DateTime
endTime_lte: DateTime
endTime_not: DateTime
endTime_not_gt: DateTime
endTime_not_gte: DateTime
endTime_not_in: [DateTime]
endTime_not_lt: DateTime
endTime_not_lte: DateTime
OR: [SessionFilter!]
startTime: DateTime
startTime_gt: DateTime
startTime_gte: DateTime
startTime_in: [DateTime]
startTime_lt: DateTime
startTime_lte: DateTime
startTime_not: DateTime
startTime_not_gt: DateTime
startTime_not_gte: DateTime
startTime_not_in: [DateTime]
startTime_not_lt: DateTime
startTime_not_lte: DateTime
title: String
title_contains: String
title_ends_with: String
title_in: [String!]
title_not: String
title_not_contains: String
title_not_ends_with: String
title_not_in: [String!]
title_not_starts_with: String
title_starts_with: String
}
input SessionSort {
abstract: SortOperationKind
duration: SortOperationKind
endTime: SortOperationKind
id: SortOperationKind
startTime: SortOperationKind
title: SortOperationKind
trackId: SortOperationKind
}
enum SortOperationKind {
ASC
DESC
}
"The `Boolean` scalar type represents `true` or `false`."
scalar Boolean
"The `DateTime` scalar represents an ISO-8601 compliant date time type."
scalar DateTime
"The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID."
scalar ID
"The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1."
scalar Int
scalar PaginationAmount
"The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text."
scalar String
scalar TimeSpan