Skip to content

GraphQL Schema Reference

Complete GraphQL schema reference including all types, inputs, queries, mutations, and subscriptions.

The GraphQL schema is automatically generated from service contracts. This schema represents the current platform services (Auth Service, Service Discovery).

scalar String # UTF-8 text
scalar Int # 32-bit integer
scalar Float # Floating point number
scalar Boolean # true or false
scalar ID # Unique identifier
scalar JSON # Arbitrary JSON data
scalar DateTime # ISO 8601 timestamp
scalar Email # Valid email address

All read operations:

type Query {
# User Management
getUser(input: GetUserInput!): UserResult
listUsers(input: ListUsersInput!): ListUsersResult
# Permissions
getUserPermissions(input: GetUserPermissionsInput!): UserPermissionsResult
listAvailablePermissions(input: ListAvailablePermissionsInput!): PermissionsListResult
# Roles
getRole(input: GetRoleInput!): RoleResult
listRoles(input: ListRolesInput!): RolesListResult
# Service Discovery
getServiceHealth(input: GetServiceHealthInput!): ServiceHealthResult
listServices(input: ListServicesInput!): ServicesListResult
getServiceContracts(input: GetServiceContractsInput!): ServiceContractsResult
}

All write operations:

type Mutation {
# User Management
createUser(input: CreateUserInput!): CreateUserResult
updateUser(input: UpdateUserInput!): UpdateUserResult
deleteUser(input: DeleteUserInput!): DeleteUserResult
# Authentication
authenticateUser(input: AuthenticateUserInput!): AuthenticationResult
refreshToken(input: RefreshTokenInput!): RefreshTokenResult
revokeToken(input: RevokeTokenInput!): RevokeTokenResult
# Role Management
createRole(input: CreateRoleInput!): CreateRoleResult
updateRolePermissions(input: UpdateRolePermissionsInput!): UpdateRolePermissionsResult
assignRole(input: AssignRoleInput!): AssignRoleResult
# Permission Management
assignPermission(input: AssignPermissionInput!): AssignPermissionResult
# Session Management
createSession(input: CreateSessionInput!): CreateSessionResult
refreshSession(input: RefreshSessionInput!): RefreshSessionResult
revokeSession(input: RevokeSessionInput!): RevokeSessionResult
revokeAllUserSessions(input: RevokeAllUserSessionsInput!): RevokeAllUserSessionsResult
}

All real-time events:

type Subscription {
# User Events
userCreated: UserCreatedEvent
userUpdated(filter: UserEventFilter): UserUpdatedEvent
userDeleted: UserDeletedEvent
# Role Events
roleAssigned(filter: RoleEventFilter): RoleAssignedEvent
permissionGranted: PermissionGrantedEvent
# Session Events
sessionCreated(filter: SessionEventFilter): SessionCreatedEvent
sessionExpired: SessionExpiredEvent
# Service Events
serviceRegistered: ServiceRegisteredEvent
serviceHealthChanged(filter: ServiceEventFilter): ServiceHealthChangedEvent
contractUpdated: ContractUpdatedEvent
}
type UserResult {
id: ID!
email: String!
profile: UserProfile!
isActive: Boolean!
emailVerified: Boolean!
lastLogin: DateTime
createdAt: DateTime!
updatedAt: DateTime!
createdBy: String
updatedBy: String
}
type UserProfile {
firstName: String
lastName: String
displayName: String
avatar: String
timezone: String
locale: String
metadata: JSON
}
type ListUsersResult {
users: [UserResult!]!
totalCount: Int!
page: Int!
pageSize: Int!
hasMore: Boolean!
}
type CreateUserResult {
success: Boolean!
userId: ID
email: String
error: String
validationErrors: [ValidationError!]
}
type ValidationError {
field: String!
message: String!
}
type AuthenticationResult {
success: Boolean!
accessToken: String
refreshToken: String
expiresIn: Int
user: AuthenticatedUser
error: String
}
type AuthenticatedUser {
id: ID!
email: String!
permissions: [String!]!
roles: [String!]
}
type RefreshTokenResult {
success: Boolean!
accessToken: String
expiresIn: Int
error: String
}
type RoleResult {
roleName: String!
description: String
permissions: [String!]!
createdAt: DateTime!
updatedAt: DateTime!
}
type RolesListResult {
roles: [RoleResult!]!
totalCount: Int!
}
type UserPermissionsResult {
userId: ID!
permissions: [String!]!
roles: [RolePermissions!]!
}
type RolePermissions {
roleName: String!
permissions: [String!]!
}
type PermissionDetail {
name: String!
description: String!
resource: String!
action: String!
}
type PermissionsListResult {
permissions: [PermissionDetail!]!
}
type ServiceHealthResult {
serviceName: String!
status: ServiceStatus!
lastHealthCheck: DateTime
responseTime: Int
errors: [String!]
}
enum ServiceStatus {
HEALTHY
DEGRADED
UNHEALTHY
UNKNOWN
}
type ServicesListResult {
services: [ServiceInfo!]!
totalCount: Int!
}
type ServiceInfo {
serviceName: String!
version: String!
status: ServiceStatus!
registeredAt: DateTime!
lastHealthCheck: DateTime
}
type ServiceContractsResult {
serviceName: String!
version: String!
contracts: [ContractDefinition!]!
}
type ContractDefinition {
messageType: String!
description: String
inputSchema: JSON
outputSchema: JSON
requiredPermissions: [String!]
isPublic: Boolean
}
input GetUserInput {
userId: ID!
}
input ListUsersInput {
page: Int!
pageSize: Int!
filter: String
}
input CreateUserInput {
email: String!
password: String!
profile: UserProfileInput!
initialRoles: [String!]
skipEmailVerification: Boolean
}
input UserProfileInput {
firstName: String
lastName: String
displayName: String
avatar: String
timezone: String
locale: String
metadata: JSON
}
input UpdateUserInput {
userId: ID!
profile: UserProfileInput
isActive: Boolean
}
input DeleteUserInput {
userId: ID!
reason: String
}
input AuthenticateUserInput {
email: String!
password: String!
}
input RefreshTokenInput {
refreshToken: String!
}
input RevokeTokenInput {
token: String!
}
input CreateRoleInput {
roleName: String!
description: String
permissions: [String!]!
}
input UpdateRolePermissionsInput {
roleName: String!
permissions: [String!]!
}
input AssignRoleInput {
userId: ID!
roleName: String!
}
input GetRoleInput {
roleName: String!
}
input ListRolesInput {
page: Int
pageSize: Int
}
input AssignPermissionInput {
userId: ID!
permission: String!
}
input GetUserPermissionsInput {
userId: ID!
}
input ListAvailablePermissionsInput {
resource: String
}
input CreateSessionInput {
userId: ID!
deviceInfo: String
ipAddress: String
}
input RefreshSessionInput {
sessionId: ID!
}
input RevokeSessionInput {
sessionId: ID!
}
input RevokeAllUserSessionsInput {
userId: ID!
reason: String
}
input GetServiceHealthInput {
serviceName: String!
}
input ListServicesInput {
status: ServiceStatus
}
input GetServiceContractsInput {
serviceName: String!
}
type UserCreatedEvent {
userId: ID!
email: String!
profile: UserProfile!
createdAt: DateTime!
timestamp: DateTime!
}
type UserUpdatedEvent {
userId: ID!
email: String!
updatedFields: [String!]!
updatedAt: DateTime!
updatedBy: String
timestamp: DateTime!
}
type UserDeletedEvent {
userId: ID!
email: String!
deletedAt: DateTime!
deletedBy: String
reason: String
timestamp: DateTime!
}
type RoleAssignedEvent {
userId: ID!
roleName: String!
assignedBy: String
timestamp: DateTime!
}
type ServiceRegisteredEvent {
serviceName: String!
version: String!
serviceId: ID!
endpoint: String
contracts: [ContractDefinition!]!
registeredAt: DateTime!
timestamp: DateTime!
}
type ServiceHealthChangedEvent {
serviceName: String!
status: ServiceStatus!
previousStatus: ServiceStatus
healthCheckTime: DateTime!
responseTime: Int
errors: [String!]
timestamp: DateTime!
}
input UserEventFilter {
userId: ID
}
input RoleEventFilter {
userId: ID
roleName: String
}
input SessionEventFilter {
userId: ID
sessionId: ID
}
input ServiceEventFilter {
serviceName: String
minSeverity: String
}
query IntrospectionQuery {
__schema {
types {
name
kind
description
fields {
name
type {
name
kind
}
}
}
queryType {
name
}
mutationType {
name
}
subscriptionType {
name
}
}
}
query GetTypeDetails {
__type(name: "UserResult") {
name
kind
description
fields {
name
type {
name
kind
}
description
}
}
}

The schema is dynamically filtered based on user permissions. Users only see operations they can access.

User permissions: ["users:read"]

type Query {
getUser(input: GetUserInput!): UserResult
listUsers(input: ListUsersInput!): ListUsersResult
# No admin operations visible
}
# No mutations visible (no write permissions)

User permissions: ["users:read", "users:create", "admin:all"]

type Query {
getUser(input: GetUserInput!): UserResult
listUsers(input: ListUsersInput!): ListUsersResult
getServiceHealth(input: GetServiceHealthInput!): ServiceHealthResult
listServices(input: ListServicesInput!): ServicesListResult
# All operations visible
}
type Mutation {
createUser(input: CreateUserInput!): CreateUserResult
updateUser(input: UpdateUserInput!): UpdateUserResult
deleteUser(input: DeleteUserInput!): DeleteUserResult
# All mutations visible
}