noise-server/noise.graphql
erik 0d4458d7dd Start writing GraphQL schema
Co-authored-by: Elias Schriefer
2021-05-10 12:54:17 +00:00

72 lines
1.5 KiB
GraphQL

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
}