Graphql Api Reference
Endpoint
POST https://api.denpex.ai/v1/<tenant_id>/graphql
Authentication
Authorization: Bearer <token>.
Schema
type Query {
incidents(state: IncidentState, limit: Int = 25, after: String): IncidentConnection!
incident(id: ID!): Incident
similar(id: ID!, k: Int = 5): [SimilarIncident!]!
diagnostics(id: ID!): Diagnostic
audit(limit: Int = 100, since: String): [AuditEntry!]!
}
type Mutation {
approveIncident(id: ID!, action: ActionClass!): RemediationApproval!
dismissIncident(id: ID!, reason: String!): DismissalResult!
rollbackRemediation(id: ID!): RemediationResult!
}
type Subscription {
incidents: Incident! # server-sent events
remediation: RemediationUpdate!
}
type Incident {
id: ID!
state: IncidentState!
host: String!
rank: Int
severity: Severity!
evidence: [Evidence!]!
rules: [RuleHit!]!
remediation: Remediation
confidence: Float!
createdAt: String! # ISO 8601
}
type Evidence {
id: ID!
kind: String!
ts: String!
source: String!
details: JSON!
}
enum ActionClass {
CORDON
DRAIN
EVICT
REROUTE
RUN_DIAGNOSTIC
OPEN_RMA_TICKET
REBOOT_NODE
RESET_GPU
}
enum Severity {
INFO
WARNING
ERROR
CRITICAL
}
type RemediationApproval {
decisionId: ID!
decision: AutomationTier!
decidedAt: String!
actor: String!
}
Subscriptions
Real-time streaming uses Server-Sent Events. Each event is a JSON object on the stream.
Limits
- Query depth ≤ 6.
- Query cost per request ≤ 1000 (rate-based).
- Mutation rate limit: same as REST.
Persisted Documents
We support Apollo-style persisted operations to reduce query size; the persisted-document registry is configured per tenant.
Examples
query RecentIncidents {
incidents(state: OPEN, limit: 5) {
nodes { id host severity confidence }
}
}