Files
dd0c/products/API.md

4.8 KiB

dd0c API Reference

All endpoints require JWT authentication via Authorization: Bearer <token> unless noted.

Base URLs (NAS): http://192.168.86.11:{port}

Auth (all products)

Method Path Description
POST /api/v1/auth/signup Create account. Body: {email, password, tenant_name}{token, tenant_id}
POST /api/v1/auth/login Login. Body: {email, password}{token}
GET /api/v1/auth/me Current user info
POST /api/v1/auth/api-keys Generate API key → {api_key}

API keys: pass via X-API-Key header.


dd0c/drift (:3002)

Method Path Description
GET /api/v1/stacks List monitored stacks (latest report per stack)
GET /api/v1/stacks/:stackName/history Drift history for a stack (last 50 reports)
GET /api/v1/reports/:reportId Get single drift report
POST /api/v1/reports Submit drift report. Body: {stack_name, stack_fingerprint, state_serial, total_resources, drift_score, raw_report}
DELETE /api/v1/stacks/:stackName Delete all reports for a stack
GET /api/v1/dashboard Dashboard summary (total stacks, drifted, critical last 24h)

dd0c/alert (:3003)

Method Path Description
GET /api/v1/incidents List incidents
GET /api/v1/incidents/:id Get incident detail
POST /api/v1/incidents/:id/acknowledge Acknowledge incident
POST /api/v1/incidents/:id/resolve Resolve incident
POST /api/v1/incidents/:id/suppress Suppress incident
GET /api/v1/summary Alert summary (open totals by severity)
GET /api/v1/notifications List notification configs
PUT /api/v1/notifications/:channel Set notification config. Body: {enabled, config, min_severity}
POST /api/v1/notifications/:channel/test Send test notification
GET /api/v1/webhooks/secrets List webhook integration secrets
PUT /api/v1/webhooks/secrets Register webhook secret. Body: {provider, secret}
DELETE /api/v1/webhooks/secrets/:provider Delete webhook secret

Webhook endpoints (no auth — HMAC validated):

Method Path Description
POST /webhooks/datadog/:tenantSlug Datadog webhook receiver
POST /webhooks/pagerduty/:tenantSlug PagerDuty webhook receiver
POST /webhooks/opsgenie/:tenantSlug OpsGenie webhook receiver
POST /webhooks/grafana/:tenantSlug Grafana webhook receiver (Bearer token)

dd0c/portal (:3004)

Method Path Description
GET /api/v1/services List services
GET /api/v1/services/:id Get service detail
PUT /api/v1/services Create/update service. Body: {name, description, owner, tier, language, repo_url, tags}
DELETE /api/v1/services/:id Delete service
GET /api/v1/ownership Ownership report
GET /api/v1/search?q= Search services (Meilisearch with PG fallback)
POST /api/v1/search/reindex Trigger Meilisearch reindex
POST /api/v1/discovery/aws Trigger AWS discovery scan
POST /api/v1/discovery/github Trigger GitHub discovery scan
GET /api/v1/discovery/history Scan history (last 20)
GET /api/v1/discovery/staged List pending staged updates
POST /api/v1/discovery/staged/:id/:action Apply or reject staged update

dd0c/cost (:3007)

Method Path Description
POST /api/v1/ingest Ingest cost events. Body: {events: [{account_id, resource_type, hourly_cost, region, tags}]}
GET /api/v1/anomalies List detected anomalies
POST /api/v1/anomalies/:id/acknowledge Acknowledge anomaly
POST /api/v1/anomalies/:id/snooze Snooze anomaly
POST /api/v1/anomalies/:id/expected Mark anomaly as expected
GET /api/v1/baselines List Welford baselines
DELETE /api/v1/baselines/:accountId/:resourceType Reset baseline
GET /api/v1/dashboard Cost dashboard
GET /api/v1/governance Governance rules
POST /api/v1/governance/promotion Promote governance rule

dd0c/run (:3006)

Method Path Description
GET /api/v1/runbooks List runbooks
GET /api/v1/runbooks/:id Get runbook detail
POST /api/v1/runbooks Create runbook. Body: {name, description, yaml_content}
POST /api/v1/runbooks/:id/execute Execute runbook. Body: {dry_run?, variables?}{execution_id, status}
GET /api/v1/runbooks/:id/executions List executions for a runbook
GET /api/v1/executions/:executionId Get execution status
GET /api/v1/approvals List pending approvals
POST /api/v1/approvals/:stepId Approve or reject step