74 lines
1.6 KiB
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 {
|
|
privacyPreference: PrivacyPreferences
|
|
externalServers: RestrictionPolicy!
|
|
externalServersLimit: [Url!]
|
|
}
|
|
|
|
# Everyone = Including all = Excluding none
|
|
# None = Including none = Excluding all
|
|
enum RestrictionPolicy {
|
|
Everyone
|
|
Excluding
|
|
Including
|
|
None
|
|
} |