-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathschema.graphql
172 lines (150 loc) · 3.07 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
type Activity {
_id: ID!
organizer: PublicUser
isOrganizer: Boolean
spot: Spot
sport: Sport
dateTime: Date
duration: Int
title: String
description: String
status: ActivityStatus
capacity: Int
shareLink: String
chatkitRoomId: String
attendeesIds: [ID]
attendees: [PublicUser]
isAttendee: Boolean
distance: Float
}
enum ActivityStatus {
ACTIVE
CANCELED
FINISHED
DELETED
}
type AuthToken {
_id: ID!
token: String!
}
type City {
_id: ID!
name: String
country: String
formattedAddress: String
location: Point
}
scalar Date
type DateRange {
"""_id: ID!"""
startDate: Date
endDate: Date
}
input DateRangeInput {
startDate: String!
endDate: String!
}
enum Gender {
F
M
TBD
}
type Keys {
auth: String!
p256dh: String!
}
input KeysInput {
auth: String!
p256dh: String!
}
enum Language {
en
es
nl
}
type Mutation {
signup(username: String!, email: String!, language: Language!): PrivateUser
login(email: String!): PrivateUser
validatePasscode(email: String!, passcode: String!): AuthToken
updateUser(username: String, gender: String, avatar: String, city: String, country: String, formattedAddress: String, coordinates: [Float]): PrivateUser
createActivity(sport: Sport!, dateTime: String!, duration: Int, capacity: Int, spotId: ID!, title: String!, description: String): Activity
updateActivity(_id: ID!, dateTime: String!, duration: Int, capacity: Int, spotId: ID!, title: String!, description: String): Activity
cancelActivity(_id: ID!, msg: String): Activity
addAttendee(_id: ID!): Activity
removeAttendee(_id: ID!): Activity
saveSubscription(subscription: SubscriptionInput!): Subscription
deleteSubscription(endpoint: String!): Subscription
sendPushNotification: [Subscription]
}
type Point {
type: String!
coordinates: [Float]!
}
type PrivateUser {
_id: ID!
createdAt: Date
email: String
profile: UserProfile
formattedAddress: String
location: Point
}
type PublicUser {
_id: ID!
profile: UserProfile
}
type Query {
privateUser: PrivateUser
publicUser(_id: ID!): PublicUser
publicUsers(_ids: [ID!]): [PublicUser]
cities: [City]
spots(sports: [Sport], distance: Float, limit: Int!, offset: Int!): [Spot]
spotDetails(_id: ID!): Spot
activities(sports: [Sport], distance: Float, limit: Int!, offset: Int!): [Activity]
activityDetails(_id: ID!): Activity
subscriptions(userId: ID!): [Subscription]
}
enum RespondentStatus {
ATTENDING
DECLINED
}
enum Sport {
FOOTBALL
VOLLEYBALL
BEACH_VOLLEYBALL
TENNIS
TABLE_TENNIS
ABSOLUTE_FRISBEE
BASKETBALL
BADMINTON
}
type Spot {
_id: ID!
spotname: String
address: String
location: Point
images: [String]
sports: [Sport]
distance: Float
activities(limit: Int!, offset: Int!): [Activity]
}
type Subscription {
_id: ID!
createdAt: Date
userId: ID
endpoint: String
keys: Keys
}
input SubscriptionInput {
endpoint: String!
keys: KeysInput!
}
type UserProfile {
_id: ID!
username: String
avatar: String
birthdate: Date
gender: Gender
language: Language
city: String
country: String
}