@accounter/server
Version:
Accounter GraphQL server
55 lines (47 loc) • 1.61 kB
text/typescript
import { gql } from 'graphql-modules';
export default gql`
" Authentication directive: requires user to be authenticated "
directive on FIELD_DEFINITION
" Role-based authorization: requires user to have specific role "
directive (role: String!) on FIELD_DEFINITION
" Role-based authorization: requires user to have any of the specified roles "
directive (roles: [String!]!) on FIELD_DEFINITION
extend type Query {
listApiKeys: [ApiKey!]! (role: "business_owner")
}
extend type Mutation {
createInvitation(email: String!, roleId: String!): InvitationPayload!
(role: "business_owner")
acceptInvitation(token: String!): AcceptInvitationPayload!
generateApiKey(name: String!, roleId: String!): GenerateApiKeyPayload!
(role: "business_owner")
revokeApiKey(id: ID!): Boolean! (role: "business_owner")
}
" Invitation payload returned after creating an invitation "
type InvitationPayload {
id: ID!
email: String!
roleId: String!
expiresAt: DateTime!
token: String!
}
" Result payload returned after accepting an invitation "
type AcceptInvitationPayload {
success: Boolean!
businessId: ID!
roleId: String!
}
" API key payload returned after generating a new API key "
type GenerateApiKeyPayload {
apiKey: String!
record: ApiKey!
}
" API key metadata (plaintext key is never stored) "
type ApiKey {
id: ID!
name: String!
roleId: String!
lastUsedAt: DateTime
createdAt: DateTime!
}
`;