noise-server/noise.graphql

74 lines
1.6 KiB
GraphQL

schema {
query: Query
}
type Query {
users: [User!]!
}
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 {
privacyPreferences: PrivacyPreferences!
notificationPreferences: NotificationPreferences!
securityPreferences: SecurityPreferences!
# TODO: external servers
externalServersPreferences: ExternalServersPreferences!
}
type PrivacyPreferences {
# 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!]
}
type NotificationPreferences {
lockDetails: Boolean!
doNotDisturb: Boolean!
}
type SecurityPreferences {
# One-purpose-passwords
accountTokens: [ID!]!
# The account's password hash
passwordHash: String!
}
type ExternalServersPreferences {
privacyPreferences: PrivacyPreferences
externalServers: RestrictionPolicy!
externalServersLimit: [Url!]
}
# Everyone = Including all = Excluding none
# None = Including none = Excluding all
enum RestrictionPolicy {
Everyone
Excluding
Including
None
}