Start writing GraphQL schema

Co-authored-by: Elias Schriefer
This commit is contained in:
Erik Foris 2021-05-10 12:54:17 +00:00
parent dfbd34a264
commit 0d4458d7dd

72
noise.graphql Normal file
View File

@ -0,0 +1,72 @@
schema {
query: Query
}
type Query {
users: [User!]!
}
# Hopefully provided by juniper and chrono
scalar DateTimeUtc
# else it's probably DateTime
# scalar DateTime
# Provided by juniper and url
scalar Url
type User {
id: ID!
userName: String!
displayName: String
activated: Boolean!
created: DateTimeUtc!
lastOnline: DateTimeUtc
preferences: UserPreferences!
}
# All account preferences for a single user
type UserPreferences {
privacyPreference: PrivacyPreference!
# TODO: notifications
notificationPreference: NotificationPreference!
# TODO: external servers
# TODO: security
}
type PrivacyPreference {
# Discovery on other servers
discovery: RestrictionPolicy!
discoveryUserLimit: [String!]
discoveryServerLimit: [Url!]
# Last seen online
lastSeen: RestrictionPolicy!
lastSeenUserLimit: [String!]
lastSeenServerLimit: [Url!]
# For enabled users/servers: Only give vague indications
# e.g. recently, a long time ago
lastSeenCourse: Boolean!
# Describing informational text regarding the user
info: RestrictionPolicy!
infoUserLimit: [String!]
infoServerLimit: [Url!]
# One-purpose-passwords
# TODO: move to security
accountTokens: [ID!]!
}
type NotificationPreference {
lockDetails: Boolean!
doNotDisturb: Boolean!
}
# Everyone = Including all = Excluding none
# None = Including none = Excluding all
enum RestrictionPolicy {
Everyone
Excluding
Including
None
}