datarekisteri/frontend/schema.gql

76 lines
1.4 KiB
GraphQL

scalar Base64
scalar Date
scalar Email
scalar KeyID
scalar PhoneNumber
scalar Time
scalar TokenID
scalar UserID
enum Unit {
Unit
Unit2
}
type PGPKey {
id: KeyID!
pgpKeyData: Base64!
expires: Time
uploaded: Time!
comment: String!
}
type Token {
id: TokenID!
name: String
tokenData: String!
comment: String!
issued: Time!
expires: Time
permissions: String!
}
type User {
id: UserID!
email: Email
pendingEmail: Email
name: String!
nickname: String!
phoneNumber: PhoneNumber!
birthdate: Date!
homeplace: String!
registered: Time!
accepted: Time
permissions: String!
isMember: Boolean!
application: String!
tokens: [Token!]!
keys: [PGPKey!]!
primaryKey: PGPKey
}
type Query {
users: [User!]!
user(id: UserID): User
applications: [User!]!
permissions: String!
}
type Mutation {
apply(email: Email!, phoneNumber: PhoneNumber!, password: String!, name: String!, nickname: String, birthdate: Date!, homeplace: String!, application: String!): User!
verifyEmail(secret: String!): Boolean!
resendVerificationEmail(user: UserID): Unit!
update(email: Email, phoneNumber: PhoneNumber, password: String, name: String, nickname: String, homeplace: String, application: String, user: UserID): User!
newToken(comment: String, name: String, permissions: String): Token!
newKey(comment: String, keyData: Base64!, expires: Time): PGPKey!
accept(user: UserID!): Unit!
reject(user: UserID!): Unit!
}