v2.4.1
data_pulse_schema.graphql
# 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 }
Schema copied to clipboard!
"}