GraphQL Schema Reference
GraphQL Schema Reference
Section titled “GraphQL Schema Reference”Complete GraphQL schema reference including all types, inputs, queries, mutations, and subscriptions.
Schema Generation
Section titled “Schema Generation”The GraphQL schema is automatically generated from service contracts. This schema represents the current platform services (Auth Service, Service Discovery).
Scalar Types
Section titled “Scalar Types”Built-in Scalars
Section titled “Built-in Scalars”scalar String # UTF-8 textscalar Int # 32-bit integerscalar Float # Floating point numberscalar Boolean # true or falsescalar ID # Unique identifierCustom Scalars
Section titled “Custom Scalars”scalar JSON # Arbitrary JSON datascalar DateTime # ISO 8601 timestampscalar Email # Valid email addressRoot Types
Section titled “Root Types”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}Mutation
Section titled “Mutation”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}Subscription
Section titled “Subscription”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}User Types
Section titled “User Types”UserResult
Section titled “UserResult”type UserResult { id: ID! email: String! profile: UserProfile! isActive: Boolean! emailVerified: Boolean! lastLogin: DateTime createdAt: DateTime! updatedAt: DateTime! createdBy: String updatedBy: String}UserProfile
Section titled “UserProfile”type UserProfile { firstName: String lastName: String displayName: String avatar: String timezone: String locale: String metadata: JSON}ListUsersResult
Section titled “ListUsersResult”type ListUsersResult { users: [UserResult!]! totalCount: Int! page: Int! pageSize: Int! hasMore: Boolean!}CreateUserResult
Section titled “CreateUserResult”type CreateUserResult { success: Boolean! userId: ID email: String error: String validationErrors: [ValidationError!]}ValidationError
Section titled “ValidationError”type ValidationError { field: String! message: String!}Authentication Types
Section titled “Authentication Types”AuthenticationResult
Section titled “AuthenticationResult”type AuthenticationResult { success: Boolean! accessToken: String refreshToken: String expiresIn: Int user: AuthenticatedUser error: String}AuthenticatedUser
Section titled “AuthenticatedUser”type AuthenticatedUser { id: ID! email: String! permissions: [String!]! roles: [String!]}RefreshTokenResult
Section titled “RefreshTokenResult”type RefreshTokenResult { success: Boolean! accessToken: String expiresIn: Int error: String}Role and Permission Types
Section titled “Role and Permission Types”RoleResult
Section titled “RoleResult”type RoleResult { roleName: String! description: String permissions: [String!]! createdAt: DateTime! updatedAt: DateTime!}RolesListResult
Section titled “RolesListResult”type RolesListResult { roles: [RoleResult!]! totalCount: Int!}UserPermissionsResult
Section titled “UserPermissionsResult”type UserPermissionsResult { userId: ID! permissions: [String!]! roles: [RolePermissions!]!}RolePermissions
Section titled “RolePermissions”type RolePermissions { roleName: String! permissions: [String!]!}PermissionDetail
Section titled “PermissionDetail”type PermissionDetail { name: String! description: String! resource: String! action: String!}PermissionsListResult
Section titled “PermissionsListResult”type PermissionsListResult { permissions: [PermissionDetail!]!}Service Discovery Types
Section titled “Service Discovery Types”ServiceHealthResult
Section titled “ServiceHealthResult”type ServiceHealthResult { serviceName: String! status: ServiceStatus! lastHealthCheck: DateTime responseTime: Int errors: [String!]}ServiceStatus
Section titled “ServiceStatus”enum ServiceStatus { HEALTHY DEGRADED UNHEALTHY UNKNOWN}ServicesListResult
Section titled “ServicesListResult”type ServicesListResult { services: [ServiceInfo!]! totalCount: Int!}ServiceInfo
Section titled “ServiceInfo”type ServiceInfo { serviceName: String! version: String! status: ServiceStatus! registeredAt: DateTime! lastHealthCheck: DateTime}ServiceContractsResult
Section titled “ServiceContractsResult”type ServiceContractsResult { serviceName: String! version: String! contracts: [ContractDefinition!]!}ContractDefinition
Section titled “ContractDefinition”type ContractDefinition { messageType: String! description: String inputSchema: JSON outputSchema: JSON requiredPermissions: [String!] isPublic: Boolean}Input Types
Section titled “Input Types”User Inputs
Section titled “User Inputs”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}Authentication Inputs
Section titled “Authentication Inputs”input AuthenticateUserInput { email: String! password: String!}
input RefreshTokenInput { refreshToken: String!}
input RevokeTokenInput { token: String!}Role Inputs
Section titled “Role Inputs”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}Permission Inputs
Section titled “Permission Inputs”input AssignPermissionInput { userId: ID! permission: String!}
input GetUserPermissionsInput { userId: ID!}
input ListAvailablePermissionsInput { resource: String}Session Inputs
Section titled “Session Inputs”input CreateSessionInput { userId: ID! deviceInfo: String ipAddress: String}
input RefreshSessionInput { sessionId: ID!}
input RevokeSessionInput { sessionId: ID!}
input RevokeAllUserSessionsInput { userId: ID! reason: String}Service Discovery Inputs
Section titled “Service Discovery Inputs”input GetServiceHealthInput { serviceName: String!}
input ListServicesInput { status: ServiceStatus}
input GetServiceContractsInput { serviceName: String!}Event Types
Section titled “Event Types”UserCreatedEvent
Section titled “UserCreatedEvent”type UserCreatedEvent { userId: ID! email: String! profile: UserProfile! createdAt: DateTime! timestamp: DateTime!}UserUpdatedEvent
Section titled “UserUpdatedEvent”type UserUpdatedEvent { userId: ID! email: String! updatedFields: [String!]! updatedAt: DateTime! updatedBy: String timestamp: DateTime!}UserDeletedEvent
Section titled “UserDeletedEvent”type UserDeletedEvent { userId: ID! email: String! deletedAt: DateTime! deletedBy: String reason: String timestamp: DateTime!}RoleAssignedEvent
Section titled “RoleAssignedEvent”type RoleAssignedEvent { userId: ID! roleName: String! assignedBy: String timestamp: DateTime!}ServiceRegisteredEvent
Section titled “ServiceRegisteredEvent”type ServiceRegisteredEvent { serviceName: String! version: String! serviceId: ID! endpoint: String contracts: [ContractDefinition!]! registeredAt: DateTime! timestamp: DateTime!}ServiceHealthChangedEvent
Section titled “ServiceHealthChangedEvent”type ServiceHealthChangedEvent { serviceName: String! status: ServiceStatus! previousStatus: ServiceStatus healthCheckTime: DateTime! responseTime: Int errors: [String!] timestamp: DateTime!}Event Filters
Section titled “Event Filters”input UserEventFilter { userId: ID}
input RoleEventFilter { userId: ID roleName: String}
input SessionEventFilter { userId: ID sessionId: ID}
input ServiceEventFilter { serviceName: String minSeverity: String}Introspection
Section titled “Introspection”Get Complete Schema
Section titled “Get Complete Schema”query IntrospectionQuery { __schema { types { name kind description fields { name type { name kind } } } queryType { name } mutationType { name } subscriptionType { name } }}Get Type Details
Section titled “Get Type Details”query GetTypeDetails { __type(name: "UserResult") { name kind description fields { name type { name kind } description } }}Permission-Based Schema
Section titled “Permission-Based Schema”The schema is dynamically filtered based on user permissions. Users only see operations they can access.
Example: Limited User
Section titled “Example: Limited User”User permissions: ["users:read"]
type Query { getUser(input: GetUserInput!): UserResult listUsers(input: ListUsersInput!): ListUsersResult # No admin operations visible}
# No mutations visible (no write permissions)Example: Admin User
Section titled “Example: Admin User”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}Next Steps
Section titled “Next Steps”- GraphQL Queries - Query examples
- GraphQL Mutations - Mutation examples
- GraphQL Subscriptions - Real-time events
- GraphQL Overview - Auto-generation and features