292 lines
5.6 KiB
GraphQL
292 lines
5.6 KiB
GraphQL
# GraphQL schema example
|
|
#
|
|
# https://gqlgen.com/getting-started/
|
|
scalar Int64
|
|
scalar Map
|
|
scalar Any
|
|
|
|
type Pagination {
|
|
limit: Int64!
|
|
page: Int64!
|
|
offset: Int64!
|
|
total: Int64!
|
|
}
|
|
|
|
type Meta {
|
|
version: String!
|
|
is_google_login_enabled: Boolean!
|
|
is_facebook_login_enabled: Boolean!
|
|
is_github_login_enabled: Boolean!
|
|
is_email_verification_enabled: Boolean!
|
|
is_basic_authentication_enabled: Boolean!
|
|
is_magic_link_login_enabled: Boolean!
|
|
}
|
|
|
|
type User {
|
|
id: ID!
|
|
email: String!
|
|
email_verified: Boolean!
|
|
signup_methods: String!
|
|
given_name: String
|
|
family_name: String
|
|
middle_name: String
|
|
nickname: String
|
|
# defaults to email
|
|
preferred_username: String
|
|
gender: String
|
|
birthdate: String
|
|
phone_number: String
|
|
phone_number_verified: Boolean
|
|
picture: String
|
|
roles: [String!]!
|
|
created_at: Int64
|
|
updated_at: Int64
|
|
}
|
|
|
|
type Users {
|
|
pagination: Pagination!
|
|
users: [User!]!
|
|
}
|
|
|
|
type VerificationRequest {
|
|
id: ID!
|
|
identifier: String
|
|
token: String
|
|
email: String
|
|
expires: Int64
|
|
created_at: Int64
|
|
updated_at: Int64
|
|
}
|
|
|
|
type VerificationRequests {
|
|
pagination: Pagination!
|
|
verification_requests: [VerificationRequest!]!
|
|
}
|
|
|
|
type Error {
|
|
message: String!
|
|
reason: String!
|
|
}
|
|
|
|
type AuthResponse {
|
|
message: String!
|
|
access_token: String
|
|
expires_at: Int64
|
|
user: User
|
|
}
|
|
|
|
type Response {
|
|
message: String!
|
|
}
|
|
|
|
type ValidJWTResponse {
|
|
valid: Boolean!
|
|
message: String!
|
|
}
|
|
|
|
type Env {
|
|
ADMIN_SECRET: String
|
|
DATABASE_NAME: String
|
|
DATABASE_URL: String
|
|
DATABASE_TYPE: String
|
|
CUSTOM_ACCESS_TOKEN_SCRIPT: String
|
|
SMTP_HOST: String
|
|
SMTP_PORT: String
|
|
SMTP_USERNAME: String
|
|
SMTP_PASSWORD: String
|
|
SENDER_EMAIL: String
|
|
JWT_TYPE: String
|
|
JWT_SECRET: String
|
|
ALLOWED_ORIGINS: [String!]
|
|
APP_URL: String
|
|
REDIS_URL: String
|
|
COOKIE_NAME: String
|
|
RESET_PASSWORD_URL: String
|
|
DISABLE_EMAIL_VERIFICATION: Boolean
|
|
DISABLE_BASIC_AUTHENTICATION: Boolean
|
|
DISABLE_MAGIC_LINK_LOGIN: Boolean
|
|
DISABLE_LOGIN_PAGE: Boolean
|
|
ROLES: [String!]
|
|
PROTECTED_ROLES: [String!]
|
|
DEFAULT_ROLES: [String!]
|
|
JWT_ROLE_CLAIM: String
|
|
GOOGLE_CLIENT_ID: String
|
|
GOOGLE_CLIENT_SECRET: String
|
|
GITHUB_CLIENT_ID: String
|
|
GITHUB_CLIENT_SECRET: String
|
|
FACEBOOK_CLIENT_ID: String
|
|
FACEBOOK_CLIENT_SECRET: String
|
|
ORGANIZATION_NAME: String
|
|
ORGANIZATION_LOGO: String
|
|
}
|
|
|
|
input UpdateEnvInput {
|
|
ADMIN_SECRET: String
|
|
CUSTOM_ACCESS_TOKEN_SCRIPT: String
|
|
OLD_ADMIN_SECRET: String
|
|
SMTP_HOST: String
|
|
SMTP_PORT: String
|
|
SMTP_USERNAME: String
|
|
SMTP_PASSWORD: String
|
|
SENDER_EMAIL: String
|
|
JWT_TYPE: String
|
|
JWT_SECRET: String
|
|
ALLOWED_ORIGINS: [String!]
|
|
APP_URL: String
|
|
REDIS_URL: String
|
|
COOKIE_NAME: String
|
|
RESET_PASSWORD_URL: String
|
|
DISABLE_EMAIL_VERIFICATION: Boolean
|
|
DISABLE_BASIC_AUTHENTICATION: Boolean
|
|
DISABLE_MAGIC_LINK_LOGIN: Boolean
|
|
DISABLE_LOGIN_PAGE: Boolean
|
|
ROLES: [String!]
|
|
PROTECTED_ROLES: [String!]
|
|
DEFAULT_ROLES: [String!]
|
|
JWT_ROLE_CLAIM: String
|
|
GOOGLE_CLIENT_ID: String
|
|
GOOGLE_CLIENT_SECRET: String
|
|
GITHUB_CLIENT_ID: String
|
|
GITHUB_CLIENT_SECRET: String
|
|
FACEBOOK_CLIENT_ID: String
|
|
FACEBOOK_CLIENT_SECRET: String
|
|
ORGANIZATION_NAME: String
|
|
ORGANIZATION_LOGO: String
|
|
}
|
|
|
|
input AdminLoginInput {
|
|
admin_secret: String!
|
|
}
|
|
|
|
input AdminSignupInput {
|
|
admin_secret: String!
|
|
}
|
|
|
|
input SignUpInput {
|
|
email: String!
|
|
given_name: String
|
|
family_name: String
|
|
middle_name: String
|
|
nickname: String
|
|
gender: String
|
|
birthdate: String
|
|
phone_number: String
|
|
picture: String
|
|
password: String!
|
|
confirm_password: String!
|
|
roles: [String!]
|
|
}
|
|
|
|
input LoginInput {
|
|
email: String!
|
|
password: String!
|
|
roles: [String!]
|
|
}
|
|
|
|
input VerifyEmailInput {
|
|
token: String!
|
|
}
|
|
|
|
input ResendVerifyEmailInput {
|
|
email: String!
|
|
identifier: String!
|
|
}
|
|
|
|
input UpdateProfileInput {
|
|
old_password: String
|
|
new_password: String
|
|
confirm_new_password: String
|
|
email: String
|
|
given_name: String
|
|
family_name: String
|
|
middle_name: String
|
|
nickname: String
|
|
gender: String
|
|
birthdate: String
|
|
phone_number: String
|
|
picture: String
|
|
}
|
|
|
|
input UpdateUserInput {
|
|
id: ID!
|
|
email: String
|
|
email_verified: Boolean
|
|
given_name: String
|
|
family_name: String
|
|
middle_name: String
|
|
nickname: String
|
|
gender: String
|
|
birthdate: String
|
|
phone_number: String
|
|
picture: String
|
|
roles: [String]
|
|
}
|
|
|
|
input ForgotPasswordInput {
|
|
email: String!
|
|
}
|
|
|
|
input ResetPasswordInput {
|
|
token: String!
|
|
password: String!
|
|
confirm_password: String!
|
|
}
|
|
|
|
input DeleteUserInput {
|
|
email: String!
|
|
}
|
|
|
|
input MagicLinkLoginInput {
|
|
email: String!
|
|
roles: [String!]
|
|
}
|
|
|
|
input SessionQueryInput {
|
|
roles: [String!]
|
|
}
|
|
|
|
input IsValidJWTQueryInput {
|
|
jwt: String
|
|
roles: [String!]
|
|
}
|
|
|
|
input PaginationInput {
|
|
limit: Int64
|
|
page: Int64
|
|
}
|
|
|
|
input PaginatedInput {
|
|
pagination: PaginationInput
|
|
}
|
|
|
|
type Mutation {
|
|
signup(params: SignUpInput!): AuthResponse!
|
|
login(params: LoginInput!): AuthResponse!
|
|
magic_link_login(params: MagicLinkLoginInput!): Response!
|
|
logout: Response!
|
|
update_profile(params: UpdateProfileInput!): Response!
|
|
verify_email(params: VerifyEmailInput!): AuthResponse!
|
|
resend_verify_email(params: ResendVerifyEmailInput!): Response!
|
|
forgot_password(params: ForgotPasswordInput!): Response!
|
|
reset_password(params: ResetPasswordInput!): Response!
|
|
# admin only apis
|
|
_delete_user(params: DeleteUserInput!): Response!
|
|
_update_user(params: UpdateUserInput!): User!
|
|
_admin_signup(params: AdminSignupInput!): Response!
|
|
_admin_login(params: AdminLoginInput!): Response!
|
|
_admin_logout: Response!
|
|
_update_env(params: UpdateEnvInput!): Response!
|
|
}
|
|
|
|
type Query {
|
|
meta: Meta!
|
|
session(params: SessionQueryInput): AuthResponse!
|
|
is_valid_jwt(params: IsValidJWTQueryInput): ValidJWTResponse!
|
|
profile: User!
|
|
# admin only apis
|
|
_users(params: PaginatedInput): Users!
|
|
_verification_requests(params: PaginatedInput): VerificationRequests!
|
|
_admin_session: Response!
|
|
_env: Env!
|
|
}
|