# DataPulse Analytics Consulting - GraphQL Schema v2.4.1
# Comprehensive schema for data engineering, BI, and AI analytics platforms
scalar DateTime
scalar JSON
scalar Upload
type Query {
# Client Management
clients(filter: ClientFilter, pagination: PaginationInput): ClientConnection!
client(id: ID!): Client
# Analytics Projects
analyticsProjects(status: ProjectStatus, clientTiers: [ClientTier!]): [AnalyticsProject!]!
project(id: ID!): AnalyticsProject
# Data Assets
datasets(projectId: ID!, tags: [String!], format: DataFormat): [Dataset!]!
dataset(id: ID!): Dataset
# Reporting & Metrics
reports(projectId: ID!, status: ReportStatus): [Report!]!
report(id: ID!): Report
metrics(dashboardId: ID!, timeRange: TimeRangeInput): [Metric!]!
# Data Pipelines
pipelines(projectId: ID!, type: PipelineType): [Pipeline!]!
pipeline(id: ID!): Pipeline
# System & Health
systemHealth: SystemHealth!
availableDataSources: [DataSource!]!
}
type Mutation {
# Client Operations
createClient(input: CreateClientInput!): CreateClientPayload!
updateClient(id: ID!, input: UpdateClientInput!): Client!
deactivateClient(id: ID!): DeactivationResult!
# Data Operations
uploadDataset(projectId: ID!, file: Upload!, metadata: DatasetMetadataInput): UploadResult!
transformDataset(datasetId: ID!, transformationRules: [TransformationRule!]): Dataset!
# Report & Pipeline
generateReport(projectId: ID!, config: ReportConfigInput!): Report!
schedulePipeline(input: PipelineScheduleInput!): Pipeline!
executePipelineNow(pipelineId: ID!): ExecutionResult!
# AI/ML Models
trainModel(input: ModelTrainingInput!): ModelTrainingJob!
deployModel(modelId: ID!, environment: Environment!): ModelDeployment!
}
type Subscription {
# Real-time Analytics Events
onReportGenerated(projectId: ID!): Report!
onPipelineStatusChange(pipelineId: ID!): PipelineStatusEvent!
onClientMetricUpdate(clientId: ID!): MetricAlert!
onDataQualityCheckComplete(datasetId: ID!): DataQualityResult!
onModelTrainingComplete(jobId: ID!): ModelTrainingResult!
onSystemHealthAlert: SystemAlert!
}
# ================= OBJECT TYPES =================
type Client {
id: ID!
name: String!
industry: String!
tier: ClientTier!
contactEmail: String!
projects: [AnalyticsProject!]!
createdAt: DateTime!
updatedAt: DateTime!
dataResidencyRegion: String!
complianceLevel: ComplianceLevel!
}
type AnalyticsProject {
id: ID!
name: String!
clientId: ID!
status: ProjectStatus!
datasets: [Dataset!]!
reports: [Report!]!
metrics: [Metric!]!
pipelines: [Pipeline!]!
createdAt: DateTime!
owner: User!
}
type Dataset {
id: ID!
name: String!
projectId: ID!
format: DataFormat!
sizeInBytes: Int!
rowCount: Int!
tags: [String!]!
schema: JSON!
qualityScore: Float!
lastUpdatedAt: DateTime!
lineage: [DataNode!]!
}
type Report {
id: ID!
projectId: ID!
title: String!
format: ReportFormat!
status: ReportStatus!
previewUrl: String
downloadUrl: String!
generatedAt: DateTime!
metricsSnapshot: [MetricSnapshot!]!
}
type Pipeline {
id: ID!
name: String!
type: PipelineType!
schedule: String
lastRun: DateTime
nextRun: DateTime
status: PipelineStatus!
logs: [PipelineLog!]!
createdAt: DateTime!
}
# ================= ENUMS =================
enum ClientTier { STARTUP | ENTERPRISE | GLOBAL_PARTNER | GOVERNMENT }
enum ProjectStatus { PLANNING | ACTIVE | PAUSED | COMPLETED | ARCHIVED }
enum DataFormat { CSV | PARQUET | JSON | AVRO | REDSHIFT_QUERY | SNOWFLAKE_VIEW }
enum ReportFormat { PDF | INTERACTIVE_DASHBOARD | POWERBI | TABLEAU | CSV_EXPORT }
enum ReportStatus { QUEUED | GENERATING | READY | FAILED | EXPIRED }
enum PipelineType { ETL | ELT | REALTIME_STREAM | BATCH_AGGREGATION | DATA_CLEANSE }
enum PipelineStatus { IDLE | RUNNING | SUCCESS | FAILED | PAUSED }
enum ComplianceLevel { SOC2_TYPE1 | SOC2_TYPE2 | HIPAA | GDPR | FINRA }
enum Environment { STAGING | PRODUCTION | CANARY | DR }
# ================= INPUT TYPES =================
input ClientFilter {
tier: ClientTier
industry: String
status: ProjectStatus
createdAfter: DateTime
search: String
}
input PaginationInput {
limit: Int = 20
offset: Int = 0
sortField: String = "createdAt"
sortOrder: SortOrder = DESC
}
input CreateClientInput {
name: String!
industry: String!
tier: ClientTier!
contactEmail: String!
dataResidencyRegion: String!
complianceLevel: ComplianceLevel!
}
input DatasetMetadataInput {
tags: [String!]
description: String
ownerEmail: String
sensitivityLevel: String
}
input ReportConfigInput {
title: String!
format: ReportFormat!
metricIds: [ID!]!
dateRange: DateRangeInput!
filters: JSON
recipients: [String!]
}
input PipelineScheduleInput {
projectId: ID!
name: String!
type: PipelineType!
cronExpression: String
sourceDatasetId: ID!
targetDatasetId: ID!
transformationRules: [TransformationRule!]
}
input ModelTrainingInput {
datasetId: ID!
algorithm: MLAlgorithm!
targetColumn: String!
hyperparameters: JSON
validationSplit: Float = 0.2
}
# ================= PAYLOAD & UTILITY TYPES =================
type ClientConnection {
items: [Client!]!
totalCount: Int!
pagination: PaginationMeta!
}
type UploadResult {
success: Boolean!
datasetId: ID!
processedRows: Int!
errors: [String!]
}
type SystemHealth {
status: String!
databaseLatency: Int!
apiRequestsPerMinute: Int!
activePipelines: Int!
storageUtilization: Float!
}
type DataNode {
id: ID!
name: String!
type: String!
dependencies: [String!]!
}
type MetricSnapshot {
metricId: ID!
value: Float!
timestamp: DateTime!
delta: Float
}
type PipelineLog {
timestamp: DateTime!
level: String!
message: String!
context: JSON
}
interface Node {
id: ID!
createdAt: DateTime!
}
enum SortOrder { ASC | DESC }
enum MLAlgorithm { RANDOM_FOREST | XGBOOST | LIGHTGBM | BERT_FINETUNED | LSTM_FORECAST }
# ================= DIRECTIVES =================
directive @deprecated(reason: String = "No longer supported") on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION
directive @auth(requires: Role) on FIELD_DEFINITION | OBJECT
type Query {
adminMetrics: AdminMetrics! @auth(requires: ADMIN)
}
type AdminMetrics {
totalClients: Int!
activePipelines: Int!
dataProcessedTB: Float!
apiLatencyP99: Int!
}
enum Role { VIEWER | ANALYST | DATA_ENGINEER | ADMIN }