diff --git a/app/src/main/graphql/org/ddnss/sfs/schema.graphqls b/app/src/main/graphql/org/ddnss/sfs/schema.graphqls new file mode 100644 index 0000000..0e45734 --- /dev/null +++ b/app/src/main/graphql/org/ddnss/sfs/schema.graphqls @@ -0,0 +1,166 @@ +type Message { + id: ID! + + timestamp: String! + + sender: ID! + + msgType: MsgType! + + content: String + + hideFor: [ID!] + + seenBy: [ID!]! +} + +type ExternalServersPreferences { + privacyPreferences: PrivacyPreferences! + + externalServers: RestrictionPolicy! + + externalServersLimit: [Url!]! +} + +type Mutation { + newUser(newUser: NewUser!): ID! + + newChat(user: ID!, passwordHash: String!, with: ID!): ID! + + newGroupChat(user: ID!, passwordHash: String!, title: String!, description: String, with: [ID!]!): ID! + + sendMessage(user: ID!, passwordHash: String!, chat: ID!, msg: MessageInput!): ID! +} + +enum RestrictionPolicy { + EVERYONE + + EXCLUDING + + INCLUDING + + NONE +} + +type NotificationPreferences { + lockDetails: Boolean! + + doNotDisturb: Boolean! +} + +""" +DateTime +""" +scalar DateTimeUtc + +""" +Url +""" +scalar Url + +type Query { + getUserID(username: String!): ID! + + isUsernameUsed(username: String!): Boolean! + + users: [User!]! + + userPreferences(id: ID!, passwordHash: String!): UserPreferences! + + chats(user: ID!, passwordHash: String!): [Chat!]! + + groupChats(user: ID!, passwordHash: String!): [GroupChat!]! + + getMessages(user: ID!, passwordHash: String!, chat: ID!, lastMsg: ID, limit: Int): [Message!]! +} + +type SecurityPreferences { + accountTokens: [ID!]! + + passwordHash: String! +} + +type PrivacyPreferences { + discovery: RestrictionPolicy! + + discoveryUserLimit: [String!]! + + discoveryServerLimit: [Url!]! + + lastSeen: RestrictionPolicy! + + lastSeenUserLimit: [String!]! + + lastSeenServerLimit: [Url!]! + + lastSeenCourse: Boolean! + + info: RestrictionPolicy! + + infoUserLimit: [String!]! + + infoServerLimit: [Url!]! +} + +type UserPreferences { + privacyPreferences: PrivacyPreferences! + + notificationPreferences: NotificationPreferences! + + securityPreferences: SecurityPreferences! + + externalServersPreferences: ExternalServersPreferences! +} + +input NewUser { + userName: String! + + displayName: String + + passwordHash: String! +} + +input MessageInput { + msgType: MsgType! + + content: String +} + +type User { + id: ID! + + userName: String! + + displayName: String + + activated: Boolean! + + created: DateTimeUtc! + + lastOnline: DateTimeUtc +} + +enum MsgType { + TEXT +} + +type Chat { + id: ID! + + users: [ID!]! +} + +type GroupChat { + id: ID! + + title: String! + + description: String + + users: [ID!]! +} + +schema { + query: Query + mutation: Mutation +}