# import Query.TeamConnection, Team from "./generated/prisma.graphql" directive @isAuthenticated on QUERY | FIELD | MUTATION directive @hasRole(roles: [String]) on QUERY | FIELD | MUTATION directive @isOwner(type: String) on QUERY | MUTATION directive @isOwnerOrHasRole(type: String, roles: [String]) on QUERY | MUTATION type Query { teams: TeamConnection teamDetails: [Team!]! @isAuthenticated teamByName(name: String!): Team teamById(teamId: String!): Team teamWithRole(teamId: String!, role: String!): Team teamsByOwner: [Team!]! @isAuthenticated teamsByRole: [Team!]! @isAuthenticated owner: Member @isAuthenticated currentMember: Member @isAuthenticated member(authId: String!): Member @isAuthenticated } type Mutation { authenticate(idToken: String!): Member createTeam(name: String!, slug: String!): Team @isAuthenticated updateTeamProfile(slug: String!, description: String, motto: String, avatar: String, banner: String): Team @isAuthenticated deleteTeam(slug: String!): Team @isAuthenticated @isOwner(type: "Team") getAzureSAS(teamSlug: String!):String sendMemberInviteSG(email: String!, teamId: String!): String confirmMember(token: String!): String removeMember(email: String!, teamId: String!): String } fragment MemberInfo on Member { id authId alias isActive profile { ...MemberProfileInfo } } fragment MemberProfileInfo on MemberProfile { firstName lastName email avatar role { name } }