diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index 5a20fd7eeefb7161a0a40e0d25f4ce4011be6af5..850c7ca8afab59f96c050076aa32c43c77e95cb7 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -88,17 +88,13 @@ const resolvers = {
         }
     },
 
-    Requests: {
+    AllRequests: {
         userJoinGroup : (obj, args, context) => {
             return db_utils.getUserJoinGroupRequests(context.user, args.groupUID);
         },
     },
 
     UserJoinGroup: {
-        requestID: (obj, args, context) => {
-            return obj.id;
-        },
-
         user : (obj, args, context) => {
             return db_utils.getUser(context.user, obj.useruid);
             /*return db_utils.getUser(context.user, "quentin.gendre");
@@ -115,10 +111,6 @@ const resolvers = {
     },
 
     GroupJoinEvent : {
-        requestID: (obj, args, context) => {
-            return obj.id;
-        },
-
         event: (obj, args, context) => {
             return db_utils.getEvent(context.user, obj.eventuid);
         },
@@ -128,10 +120,6 @@ const resolvers = {
     },
 
     YourGroupHostEvent : {
-        requestID: (obj, args, context) => {
-            return obj.id;
-        },
-
         event: (obj, args, context) => {
             return db_utils.getEvent(context.user, obj.eventuid);
         },
diff --git a/src/graphql/typeDefs.js b/src/graphql/typeDefs.js
index 8ed83f0ce0c65e482548b174c9fd5cc9035fa4c4..9842a8824577c71263a4a2a1f1ebc3aad01589d5 100644
--- a/src/graphql/typeDefs.js
+++ b/src/graphql/typeDefs.js
@@ -10,7 +10,9 @@ const RootTypes = `
         allAnnouncements: [Announcement]
 
         asAdmin(groupUID: ID): AdminQuery
-
+        asSpeaker(groupUID: ID): AdminQuery
+        asMember(groupUID: ID): AdminQuery
+        asViewer(groupUID: ID): AdminQuery
         
         searchTOL(
             givenName: String,
@@ -68,6 +70,7 @@ const subMutations = `
 
     type SpeakerMutation{
         postEvent(name: String, date: String): Event
+        answerRequest(request: ID, accept : Boolean): Request
     }
 
     type MemberMutation {
@@ -78,13 +81,26 @@ const subMutations = `
         requestJoin: Group
     }
 
+
 `;
 
 const subQueries = `
     # Requête à la base de donnée nécessitant d'être administrateur.
     type AdminQuery{
         isAdmin: Boolean
-        allRequests : Requests
+        allRequests : AllRequests
+    }
+
+    type SpeakerQuery{
+        isSpeaker: Boolean
+    }
+
+    type MemberQuery{
+        isMember: Boolean
+    }
+
+    type ViewerQuery{
+        isViewer: Boolean
     }
 `;
 
@@ -187,27 +203,32 @@ const Event = `
 
 const Requests = `
     # Demandes effectuées au groupe.
-    type Requests {
+    type AllRequests {
         userJoinGroup: [UserJoinGroup]
         groupJoinEvent: [GroupJoinEvent]
         yourGroupHostEvent: [YourGroupHostEvent]
     }
 
-    # Demande d'un utilisateur désirant rejoindre le groupe.
-    type UserJoinGroup {
+    interface Request {
         # ID de la demande
-        requestID: ID
-        # Émetteur de la demande
-        user: User
+        id: ID!
         # message accompagnant la demande
         message: String
     }
 
+    # Demande d'un utilisateur désirant rejoindre le groupe.
+    type UserJoinGroup implements Request{
+        id: ID!
+        message: String
+        # Émetteur de la demande
+        user: User
+    }
+
 
     # Demande d'un groupe voulant rejoindre un événement
-    type GroupJoinEvent {
-        # ID de la demande
-        requestID: ID
+    type GroupJoinEvent implements Request{
+        id: ID!
+        message: String
         # Événement concerné
         event: Event
         # Groupe voulant rejoindre l'événement
@@ -215,9 +236,9 @@ const Requests = `
     }
 
     # Demande au récipiendaire de rejoindre l'organisation d'un événement.
-    type YourGroupHostEvent {
-        # ID de la demande
+    type YourGroupHostEvent implements Request{
         requestID: ID
+        message: String
         # Événement concerné
         event: Event
         # Groupe ayant publié l'évènement et lancé l'invitation