generated from kriasoft/graphql-starter-kit
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
schema.graphql
209 lines (172 loc) · 3.88 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
schema {
query: Root
mutation: Mutation
}
"""The top-level GraphQL API."""
type Root {
"""Fetches an object given its ID"""
node(
"""The ID of an object"""
id: ID!
): Node
"""Fetches objects given their IDs"""
nodes(
"""The IDs of objects"""
ids: [ID!]!
): [Node]!
"""The authenticated user."""
me: User
"""Fetches a user account by username or email."""
user(username: String, email: String): User
"""Fetches user accounts."""
users(
"""Returns the items in the list that come after the specified cursor."""
after: String
"""Returns the first n items from the list."""
first: Int
): UserConnection
}
"""An object with an ID"""
interface Node {
"""The id of the object."""
id: ID!
}
"""The registered user account."""
type User implements Node {
"""The ID of an object"""
id: ID!
username: String!
email: String
emailVerified: Boolean
name: String
picture: Picture!
givenName: String
familyName: String
timeZone: String
locale: String
identities: [Identity!]
created(format: String): String
updated(format: String): String
lastLogin(format: String): String
}
type Picture {
url: String
}
"""The OAuth user identity (credentials)."""
type Identity {
"""The ID of an object"""
id: ID!
provider: IdentityProvider!
username: String
email: String
created(format: String): String
updated(format: String): String
}
"""OAuth identity provider"""
enum IdentityProvider {
Google
Apple
Facebook
GitHub
LinkedIn
Microsoft
Twitter
Yahoo
GameCenter
PlayGames
}
"""A connection to a list of items."""
type UserConnection {
"""Information to aid in pagination."""
pageInfo: PageInfo!
"""A list of edges."""
edges: [UserEdge]
totalCount: Int!
}
"""Information about pagination in a connection."""
type PageInfo {
"""When paginating forwards, are there more items?"""
hasNextPage: Boolean!
"""When paginating backwards, are there more items?"""
hasPreviousPage: Boolean!
"""When paginating backwards, the cursor to continue."""
startCursor: String
"""When paginating forwards, the cursor to continue."""
endCursor: String
}
"""An edge in a connection."""
type UserEdge {
"""The item at the end of the edge"""
node: User
"""A cursor for use in pagination"""
cursor: String!
}
type Mutation {
"""Creates an authentication session"""
signIn(input: SignInInput): SignInPayload
"""Clears authentication session"""
signOut: String
"""Creates a new user account"""
createUser(input: CreateUserInput, dryRun: Boolean! = false): CreateUserPayload
getUploadURL(fileName: String!, contentType: String): String
"""Sends password recovery code to the user's email address"""
resetPassword(
"""Username or email"""
username: String
"""New password"""
password: String
"""Verification code"""
code: String
): ResetPasswordPayload
"""Saves the uploaded file (URL path) to the database"""
saveUpload(id: ID!, uploadURL: String!, uploadType: UploadType!): SaveUploadPayload
"""Updates the user account."""
updateUser(input: UpdateUserInput, dryRun: Boolean! = false): UpdateUserPayload
}
type SignInPayload {
user: User
}
input SignInInput {
"""Username or email"""
username: String
"""User's password"""
password: String
}
type CreateUserPayload {
user: User
}
input CreateUserInput {
username: String
email: String
password: String
firstName: String
lastName: String
timeZone: String
locale: String
signIn: Boolean = false
}
type ResetPasswordPayload {
user: User
}
type SaveUploadPayload {
user: User
}
"""The type of the uploaded file"""
enum UploadType {
ProfilePicture
ClassCoverImage
ClassVideoImage
}
type UpdateUserPayload {
user: User
}
input UpdateUserInput {
id: ID!
username: String
email: String
name: String
givenName: String
familyName: String
timeZone: String
locale: String
}