Skip to main content

SmartSRE - Intelligent Infrastructure Automation (1.0.0)

Download OpenAPI specification:Download

Intelligent infrastructure automation platform that automatically fixes GCP issues, optimizes costs, and prevents incidents

authentication

Login

Authenticate user and return tokens

Request Body schema: application/json
required
email
required
string (Email)
password
required
string (Password)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "password": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Logout

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Refresh Token

Request Body schema: application/json
Any of
Refresh Token (string) or Refresh Token (null) (Refresh Token)
Any of
string (Refresh Token)

Responses

Request samples

Content type
application/json
Example
{
  • "refresh_token": "string"
}

Response samples

Content type
application/json
null

Create Magic Link

Request Body schema: application/json
required
email
required
string (Email)
Tenant Id (string) or Tenant Id (null) (Tenant Id)
send_email
boolean (Send Email)
Default: true

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "tenant_id": "string",
  • "send_email": true
}

Response samples

Content type
application/json
null

Magic Login

Responses

Response samples

Content type
application/json
null

Select Project

Authorizations:
HTTPBearer
Request Body schema: application/json
required
project_id
required
string (Project Id)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "project_id": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Select Tenant

Authorizations:
HTTPBearer
Request Body schema: application/json
required
tenant_id
required
string (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Create Ws Token

Mint a short-lived WebSocket token for the current user (Phase 1). Requires a valid access token; returns a ws_token suitable for WS handshake.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

users

Get Current User

Get current user information

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get User Capabilities

Get current user's effective permissions (cleaner endpoint for UI logic).

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Forgot Password

Start password reset flow. Always return success to avoid user enumeration.

Behavior:

  • If user exists, create a one-time token valid for 1 hour and store it.
  • In local environment, include the token in the response for easy testing.
  • In non-local envs, do not reveal token; a mailer integration can send it.
Request Body schema: application/json
required
email
required
string (Email)

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Response samples

Content type
application/json
null

Reset Password

Complete password reset given a valid token and new password.

Request Body schema: application/json
required
token
required
string (Token)
new_password
required
string (New Password)

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "new_password": "string"
}

Response samples

Content type
application/json
null

Set Password

Set password post-signup given a one-time token and new password.

Request Body schema: application/json
required
token
required
string (Token)
new_password
required
string (New Password)

Responses

Request samples

Content type
application/json
{
  • "token": "string",
  • "new_password": "string"
}

Response samples

Content type
application/json
null

Request Email Mfa Code

Send a one-time MFA code to the user's email (idempotent and non-enumerating).

Request Body schema: application/json
required
email
required
string (Email)

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Response samples

Content type
application/json
null

sso

Webauthn Register Challenge

Request Body schema: application/json
required
email
required
string (Email)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Webauthn Register Verify

Request Body schema: application/json
required
email
required
string (Email)
required
object (Attestation)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "attestation": { }
}

Response samples

Content type
application/json
null

Webauthn Register Start

Deprecated alias for register/challenge; kept for test/backwards compat.

Requires authentication. When called without a valid bearer token, FastAPI will return 401 via the get_security_context dependency.

For authenticated callers, we simply acknowledge the endpoint without performing any registration logic (the SPA should use /webauthn/register/challenge).

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Webauthn Login Challenge

Request Body schema: application/json
required
email
required
string (Email)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Webauthn Auth Start

Backwards-compatible alias for login challenge used by tests.

This implementation is intentionally lightweight and avoids DB dependencies so it can run in smoke/test environments even when PostgreSQL is unavailable. It returns a minimal WebAuthn options structure with a publicKey field so tests can validate shape.

Request Body schema: application/json
required
email
required
string (Email)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Webauthn Login Verify

Request Body schema: application/json
required
email
required
string (Email)
required
object (Assertion)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "assertion": { },
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

Login With Google

Authenticate user via Google OAuth and return tokens

Request Body schema: application/json
required
id_token
required
string (Id Token)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "id_token": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
null

api-keys

Create Api Key

Create API key for programmatic access

Authorizations:
HTTPBearer
Request Body schema: application/json
required
description
string (Description)
Default: ""

Responses

Request samples

Content type
application/json
{
  • "description": ""
}

Response samples

Content type
application/json
null

mfa

Setup Totp

Generate a new TOTP secret for authenticator app setup.

Returns a QR code URI and secret for the user to configure their authenticator app. The setup is not complete until /totp/verify is called.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "qr_uri": "string",
  • "secret": "string",
  • "issuer": "SmartSRE"
}

Verify Totp

Verify a TOTP code to complete authenticator setup.

This is the final step of TOTP enrollment. The user must enter a valid code from their authenticator app to confirm the secret is correctly configured.

Returns recovery codes that should be saved securely.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
code
required
string (Code) = 6 characters

6-digit TOTP code

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "recovery_codes": [
    ],
  • "message": "TOTP authentication enabled successfully"
}

Disable Totp

Disable TOTP authentication.

Requires the current TOTP code to confirm the user has access to their authenticator.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
code
required
string (Code) = 6 characters

Current TOTP code to confirm

Responses

Request samples

Content type
application/json
{
  • "code": "string"
}

Response samples

Content type
application/json
null

Get Mfa Status

Get current MFA configuration status for the authenticated user.

Returns which MFA methods are enabled and whether MFA is required based on the user's permissions.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "mfa_enabled": true,
  • "totp_enabled": true,
  • "webauthn_enabled": true,
  • "recovery_codes_remaining": 0,
  • "mfa_required": true
}

webhooks

Receive Webhook

Receive and process webhooks from monitoring systems.

path Parameters
source
required
string (Source)
query Parameters
token
string (Token)
signature
string (Signature)

Responses

Response samples

Content type
application/json
null

alerts

Get Alerts

Get recent signals for the current tenant.

Authorizations:
HTTPBearer
query Parameters
page
integer (Page)
Default: 1
page_size
integer (Page Size)
Default: 50
Status (string) or Status (null) (Status)
Service Name (string) or Service Name (null) (Service Name)
Severity (string) or Severity (null) (Severity)
Sort (string) or Sort (null) (Sort)
Sort Dir (string) or Sort Dir (null) (Sort Dir)

Responses

Response samples

Content type
application/json
null

Get Alert Services

Get list of services that have generated signals

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Alert Details

Get detailed information about a specific alert

Authorizations:
HTTPBearer
path Parameters
alert_id
required
string (Alert Id)

Responses

Response samples

Content type
application/json
null

Acknowledge Alert

Acknowledge a signal

Authorizations:
HTTPBearer
path Parameters
alert_id
required
string (Alert Id)

Responses

Response samples

Content type
application/json
null

automations

Get Automations

Get recent automations for the current tenant.

Authorizations:
HTTPBearer
query Parameters
page
integer (Page)
Default: 1
page_size
integer (Page Size)
Default: 50
sort
string (Sort)
Default: "started_at"
sort_dir
string (Sort Dir)
Default: "desc"

Responses

Response samples

Content type
application/json
null

Get Automations Summary

Summarize automations using AgentRun as the source of truth.

Returns totals and status distribution for the selected window (default 30d).

Authorizations:
HTTPBearer
query Parameters
hours
integer (Hours) [ 1 .. 4320 ]
Default: 720

Responses

Response samples

Content type
application/json
null

List Automations Normalized

Return normalized automation rows based on AgentRun for the current tenant.

Shape is stable for UI consumption:

  • id, service_name, agent_name, action_type, status, started_at, completed_at, duration_seconds
Authorizations:
HTTPBearer
query Parameters
page
integer (Page) >= 1
Default: 1
page_size
integer (Page Size) [ 1 .. 200 ]
Default: 25
sort
string (Sort)
Default: "started_at"
sort_dir
string (Sort Dir)
Default: "desc"
Service (string) or Service (null) (Service)
Status (string) or Status (null) (Status)

Responses

Response samples

Content type
application/json
null

Get Automation Detail

Fetch a single automation record including execution result (for debugging/visibility).

Authorizations:
HTTPBearer
path Parameters
automation_id
required
string (Automation Id)

Responses

Response samples

Content type
application/json
null

Submit Feedback

Submit feedback for an automation execution.

Body: { "useful": boolean, "comment": string }

Authorizations:
HTTPBearer
path Parameters
automation_id
required
string (Automation Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

services

Get Supported Services

Get list of supported services and their metadata (registry-driven).

Responses

Response samples

Content type
application/json
null

Get Service Status

Get status and simple stats for a service

Authorizations:
HTTPBearer
path Parameters
service_name
required
string (Service Name)

Responses

Response samples

Content type
application/json
null

incidents

Get Active Incidents

List active or recent complex incidents (orchestrations).

Authorizations:
HTTPBearer
query Parameters
status
string (Status)
limit
integer (Limit)
Default: 50

Responses

Response samples

Content type
application/json
null

Handle Complex Incident

Handle complex multi-service incidents with orchestration

Authorizations:
HTTPBearer
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Get Incident Status

Get status of complex incident orchestration

Authorizations:
HTTPBearer
path Parameters
incident_id
required
string (Incident Id)

Responses

Response samples

Content type
application/json
null

Generate Incident Report

Generate comprehensive incident report

Authorizations:
HTTPBearer
path Parameters
incident_id
required
string (Incident Id)

Responses

Response samples

Content type
application/json
null

Get Incident Overview

Proxy convenience endpoint returning the current incident status.

Mirrors the data returned by /incidents/{incident_id}/status so clients using the shorter path keep working.

Authorizations:
HTTPBearer
path Parameters
incident_id
required
string (Incident Id)

Responses

Response samples

Content type
application/json
null

approvals

Propose Fix From Change Set

Create an approval request from an SmartSRE change_set.

This bridges advise → approval by packaging the change_set with minimal risk information so approvers can review and authorize remediation.

Uses propose_changes permission (new) or falls back to manage_services (legacy).

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)
Enum: "cloudrun" "gke" "bigquery" "cloudsql" "gcs" "gce" "pubsub" "secretmgr"
required
object (ChangeSet)
Title (string) or Title (null) (Title)

Optional human-friendly title

RiskInfo (object) or null
Estimated Impact (object) or Estimated Impact (null) (Estimated Impact)

Responses

Request samples

Content type
application/json
{
  • "service": "cloudrun",
  • "change_set": {
    },
  • "title": "string",
  • "risk": {
    },
  • "estimated_impact": { }
}

Response samples

Content type
application/json
{ }

Get Pending Approvals

Get pending approval requests for the current tenant.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • { }
]

Get Approval Status

Get status of specific approval request.

Authorizations:
HTTPBearer
path Parameters
approval_id
required
string (Approval Id)

Responses

Response samples

Content type
application/json
{ }

Process Approval Decision

Process approval decision (approve/reject).

Enforces maker-checker pattern: the user who requested the approval cannot be the same user who approves it (unless platform admin bypass).

Authorizations:
HTTPBearer
path Parameters
approval_id
required
string (Approval Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

Update Approval Changeset

Update the stored change_set for a pending approval.

Authorizations:
HTTPBearer
path Parameters
approval_id
required
string (Approval Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

Cancel Approval

Cancel a pending approval request.

Authorizations:
HTTPBearer
path Parameters
approval_id
required
string (Approval Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

Retry Approval Execution

Retry execution for an approved but failed request.

Authorizations:
HTTPBearer
path Parameters
approval_id
required
string (Approval Id)

Responses

Response samples

Content type
application/json
{ }

Get Approval History

Get approval history for the current tenant.

Authorizations:
HTTPBearer
query Parameters
limit
integer (Limit)
Default: 50

Responses

Response samples

Content type
application/json
[
  • { }
]

Get Approval Metrics

Get approval workflow metrics for the current tenant.

Authorizations:
HTTPBearer
query Parameters
days
integer (Days)
Default: 30

Responses

Response samples

Content type
application/json
{ }

rollbacks

Request Automation Rollback

Request a rollback for a specific automation (step 1 of maker-checker).

Creates a pending rollback request that must be approved before execution.

Authorizations:
HTTPBearer
path Parameters
automation_id
required
string (Automation Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Approve Rollback Request

Approve a pending rollback request (step 2 of maker-checker).

Enforces maker ≠ checker: the requester cannot approve their own request.

Authorizations:
HTTPBearer
path Parameters
request_id
required
string (Request Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Execute Approved Rollback

Execute an approved rollback request (step 3 of maker-checker).

Only approved rollback requests can be executed.

Authorizations:
HTTPBearer
path Parameters
request_id
required
string (Request Id)
query Parameters
dry_run
boolean (Dry Run)
Default: false

Responses

Response samples

Content type
application/json
null

Executor Rollback

Trigger rollback via ChangeSetExecutor (legacy endpoint).

RBAC: execute_rollbacks or (manage_services + approve_automations)

Authorizations:
HTTPBearer
path Parameters
automation_id
required
string (Automation Id)
query Parameters
dry_run
boolean (Dry Run)
Default: false

Responses

Response samples

Content type
application/json
null

Rollback Orchestration

Rollback a complete orchestration

Authorizations:
HTTPBearer
path Parameters
orchestration_id
required
string (Orchestration Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Get Rollback Status

Get status of active rollback

Authorizations:
HTTPBearer
path Parameters
rollback_id
required
string (Rollback Id)

Responses

Response samples

Content type
application/json
null

List Checkpoints

List available checkpoints for rollback

Authorizations:
HTTPBearer
query Parameters
Resource Type (string) or Resource Type (null) (Resource Type)
Resource Id (string) or Resource Id (null) (Resource Id)

Responses

Response samples

Content type
application/json
null

Cleanup Expired Checkpoints

Clean up expired checkpoints

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

tenants

List Tenants

List tenants visible to the current user.

Authorizations:
HTTPBearer
query Parameters
active_only
boolean (Active Only)
Default: true

Responses

Response samples

Content type
application/json
[
  • { }
]

Create Tenant

Create a new tenant.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

Get Tenant Info

Get tenant information and configuration.

Platform admins can fetch any tenant even when their current token has no tenant_id set. Non-admin callers must match their own tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Update Tenant Config

Update tenant configuration.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

Get Tenant Metrics

Get tenant usage metrics and analytics.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
query Parameters
months
integer (Months)
Default: 3

Responses

Response samples

Content type
application/json
{ }

Get Tenant Billing

Get tenant billing information.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Upgrade Tenant

Upgrade tenant to new subscription tier.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

Suspend Tenant

Suspend tenant account.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
{ }

List All Tenants

List all tenants (admin endpoint).

Authorizations:
HTTPBearer
query Parameters
active_only
boolean (Active Only)
Default: true

Responses

Response samples

Content type
application/json
[
  • { }
]

List Tenant Projects

List all GCP projects for a tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Notification Settings

Get tenant notification preferences.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{
  • "email_alerts": false,
  • "slack_integration": false,
  • "sms_alerts": false,
  • "channels": {
    }
}

Update Notification Settings

Update tenant notification preferences.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
email_alerts
boolean (Email Alerts)
Default: false
slack_integration
boolean (Slack Integration)
Default: false
sms_alerts
boolean (Sms Alerts)
Default: false
Channels (object) or Channels (null) (Channels)

Responses

Request samples

Content type
application/json
{
  • "email_alerts": false,
  • "slack_integration": false,
  • "sms_alerts": false,
  • "channels": {
    }
}

Response samples

Content type
application/json
{
  • "email_alerts": false,
  • "slack_integration": false,
  • "sms_alerts": false,
  • "channels": {
    }
}

Get Webhook Token

Return the current webhook token for this tenant (if any).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{
  • "webhook_token": "string"
}

Create Webhook Token

Generate a webhook token for this tenant if one does not already exist.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{
  • "webhook_token": "string"
}

Rotate Webhook Token

Rotate the webhook token for this tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{
  • "webhook_token": "string"
}

Remove Tenant Project

Remove a GCP project from a tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
project_id
required
string (Project Id)

Responses

Response samples

Content type
application/json
{ }

Update Project Automation

Enable or disable automations for a specific GCP project.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
project_id
required
string (Project Id)
Request Body schema: application/json
required
automations_enabled
required
boolean (Automations Enabled)

Responses

Request samples

Content type
application/json
{
  • "automations_enabled": true
}

Response samples

Content type
application/json
{ }

Update Project Active Status

Enable or disable a GCP project (active status).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
project_id
required
string (Project Id)
Request Body schema: application/json
required
is_active
required
boolean (Is Active)

Responses

Request samples

Content type
application/json
{
  • "is_active": true
}

Response samples

Content type
application/json
{ }

Test Project Sa Secret

Mint an ID token for the tenant service account.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
project_id
required
string (Project Id)

Responses

Response samples

Content type
application/json
{ }

Get Project Config

Admin endpoint to fetch current project configuration (for UI editing).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
project_id
required
string (Project Id)

Responses

Response samples

Content type
application/json
{ }

Update Preferences

Update persisted preferences such as persona. Stores values in Tenant.risk_config under preferences.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
Persona (string) or Persona (null) (Persona)

sre | finops | executive

Any of
string (Persona)

sre | finops | executive

Responses

Request samples

Content type
application/json
{
  • "persona": "string"
}

Response samples

Content type
application/json
{ }

Update Risk Guardrails

Update per‑service risk guardrails for Cloud SQL (approval gating, allowed hours).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
Cloudsql Require Approval (boolean) or Cloudsql Require Approval (null) (Cloudsql Require Approval)
Array of Cloudsql Allowed Hours (integers) or Cloudsql Allowed Hours (null) (Cloudsql Allowed Hours)

[start,end] in 0..24 UTC

Gke Max Nodes (integer) or Gke Max Nodes (null) (Gke Max Nodes)
Gke Min Nodes (integer) or Gke Min Nodes (null) (Gke Min Nodes)
Gke Max Hpa Max (integer) or Gke Max Hpa Max (null) (Gke Max Hpa Max)
Bigquery Max Slots (integer) or Bigquery Max Slots (null) (Bigquery Max Slots)
Bigquery Min Slots (integer) or Bigquery Min Slots (null) (Bigquery Min Slots)
Bigquery Require Approval (boolean) or Bigquery Require Approval (null) (Bigquery Require Approval)
Array of Cloudrun Allowed Ops (strings) or Cloudrun Allowed Ops (null) (Cloudrun Allowed Ops)
Array of Bigquery Allowed Ops (strings) or Bigquery Allowed Ops (null) (Bigquery Allowed Ops)
Array of Gke Allowed Ops (strings) or Gke Allowed Ops (null) (Gke Allowed Ops)
Array of Cloudsql Allowed Ops (strings) or Cloudsql Allowed Ops (null) (Cloudsql Allowed Ops)
Array of Gcs Allowed Ops (strings) or Gcs Allowed Ops (null) (Gcs Allowed Ops)
Array of Secretmgr Allowed Ops (strings) or Secretmgr Allowed Ops (null) (Secretmgr Allowed Ops)
CloudSQLGuardrails (object) or null

Cloud SQL guardrails (nested shape)

BigQueryGuardrails (object) or null

BigQuery guardrails (nested shape)

GKEGuardrails (object) or null

GKE guardrails (nested shape)

CloudRunGuardrails (object) or null

Cloud Run guardrails (nested shape)

SimpleOpsGuardrails (object) or null

Cloud Storage guardrails (nested shape)

SimpleOpsGuardrails (object) or null

Secret Manager guardrails (nested shape)

Responses

Request samples

Content type
application/json
{
  • "cloudsql_require_approval": true,
  • "cloudsql_allowed_hours": [
    ],
  • "gke_max_nodes": 0,
  • "gke_min_nodes": 0,
  • "gke_max_hpa_max": 0,
  • "bigquery_max_slots": 0,
  • "bigquery_min_slots": 0,
  • "bigquery_require_approval": true,
  • "cloudrun_allowed_ops": [
    ],
  • "bigquery_allowed_ops": [
    ],
  • "gke_allowed_ops": [
    ],
  • "cloudsql_allowed_ops": [
    ],
  • "gcs_allowed_ops": [
    ],
  • "secretmgr_allowed_ops": [
    ],
  • "cloud_sql": {
    },
  • "bigquery": {
    },
  • "gke": {
    },
  • "cloudrun": {
    },
  • "gcs": {
    },
  • "secretmgr": {
    }
}

Response samples

Content type
application/json
{ }

Get Risk Guardrails

Return current per‑service risk guardrails for the tenant (read‑only).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Update Risk Global Settings

Update tenant-level risk global settings.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
Automation Enabled (boolean) or Automation Enabled (null) (Automation Enabled)

Master switch for automation execution

Auto Execution Enabled (boolean) or Auto Execution Enabled (null) (Auto Execution Enabled)

Back-compat alias; many agents read this flag for auto-execution

Require Approval For High Risk (boolean) or Require Approval For High Risk (null) (Require Approval For High Risk)

If true, high/critical actions require explicit approval

Auto Approve Rollbacks (boolean) or Auto Approve Rollbacks (null) (Auto Approve Rollbacks)

If true, safe rollbacks may bypass approval

Business Hours Only (boolean) or Business Hours Only (null) (Business Hours Only)

If true, automation only during business hours

Max Cost Impact Auto (number) or Max Cost Impact Auto (null) (Max Cost Impact Auto)

Maximum % cost impact allowed for auto-execution

Max Cost Impact Approval (number) or Max Cost Impact Approval (null) (Max Cost Impact Approval)

Maximum % cost impact allowed with approval

Risk Profile (string) or Risk Profile (null) (Risk Profile)

Risk profile key (conservative|balanced|aggressive|custom)

Responses

Request samples

Content type
application/json
{
  • "automation_enabled": true,
  • "auto_execution_enabled": true,
  • "require_approval_for_high_risk": true,
  • "auto_approve_rollbacks": true,
  • "business_hours_only": true,
  • "max_cost_impact_auto": 0,
  • "max_cost_impact_approval": 0,
  • "risk_profile": "string"
}

Response samples

Content type
application/json
{ }

Get Scheduler Settings

Return scheduler settings for a tenant (admin/platform-admin only).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Update Scheduler Settings

Update scheduler settings (admin/platform-admin).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
Enabled (boolean) or Enabled (null) (Enabled)

Enable periodic scans

Array of Services (strings) or Services (null) (Services)

Subset of services, e.g., ['cloudrun','gcs','bigquery']

Interval Minutes (integer) or Interval Minutes (null) (Interval Minutes)

Advise interval minutes (tenant override)

Responses

Request samples

Content type
application/json
{
  • "enabled": true,
  • "services": [
    ],
  • "interval_minutes": 0
}

Response samples

Content type
application/json
{ }

List Tenant Users Endpoint

List users and their roles for the tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Assign Tenant User Role Endpoint

Assign or change a user's role within the tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
Request Body schema: application/json
required
user_email
required
string (User Email)

User email to assign role to

role_name
required
string (Role Name)

Role name to assign (e.g., user, viewer, admin, platform_admin)

Responses

Request samples

Content type
application/json
{
  • "user_email": "string",
  • "role_name": "string"
}

Response samples

Content type
application/json
{ }

List Roles Metadata

List all roles and their permissions (admin/manage_users).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Get Effective Permissions

Get the effective role and permissions for a user within this tenant.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
query Parameters
user_email
required
string (User Email)

Responses

Response samples

Content type
application/json
{ }

monitoring

Get System Health

Get comprehensive system health dashboard

Responses

Response samples

Content type
application/json
null

Get Tenant Dashboard

Get tenant-specific monitoring dashboard (custom per tenant)

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string (Tenant Id)

Responses

Response samples

Content type
application/json
null

Trigger Test Alert

Trigger a test alert for demonstration purposes

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Risk Analytics

Placeholder for risk analytics; see analytics routes for details

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string (Tenant Id)
query Parameters
days
integer (Days)
Default: 30

Responses

Response samples

Content type
application/json
null

configuration

Get Risk Profiles

Get available risk profiles (system presets + custom)

Responses

Response samples

Content type
application/json
null

Get Tenant Configuration

Get all configuration for the current tenant

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Update Agent Configuration

Update configuration for a specific agent type

Authorizations:
HTTPBearer
path Parameters
agent_type
required
string (Agent Type)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Get Service Type Defaults

Get default configuration for a service type

path Parameters
service_type
required
string (Service Type)

Responses

Response samples

Content type
application/json
null

Invalidate Configuration Cache

Invalidate configuration cache for the current tenant

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

database

Get Database Status

Get database status and migration information

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Run Database Migrations

Run database migrations (admin only)

Authorizations:
HTTPBearer
query Parameters
target_revision
string (Target Revision)
Default: "head"

Responses

Response samples

Content type
application/json
null

Create Database Backup

Create database backup (admin only)

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Detailed Database Health

Get detailed database health metrics

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

security

Get Security Status

Get comprehensive security status (admin only)

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Credential Summary

Get credential configuration summary (admin only)

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Generate Secure Secret

Generate a cryptographically secure secret (admin only)

Authorizations:
HTTPBearer
query Parameters
length
integer (Length)
Default: 32

Responses

Response samples

Content type
application/json
null

Get Recent Security Events

Get recent security events (admin only)

Authorizations:
HTTPBearer
query Parameters
hours
integer (Hours)
Default: 24

Responses

Response samples

Content type
application/json
null

List User Password Status

List users with an indicator whether a password_hash is present (admin only).

Returns up to limit users ordered by creation time desc with fields:

  • email
  • created_at
  • has_password_hash (bool)
Authorizations:
HTTPBearer
query Parameters
limit
integer (Limit)
Default: 100

Responses

Response samples

Content type
application/json
null

audit

Get Audit Events

Get audit events for the current tenant

Authorizations:
HTTPBearer
query Parameters
limit
integer (Limit) [ 1 .. 1000 ]
Default: 100
hours
integer (Hours) [ 1 .. 168 ]
Default: 24
Category (string) or Category (null) (Category)
Level (string) or Level (null) (Level)

Responses

Response samples

Content type
application/json
null

Get Audit Summary

Get audit summary statistics

Authorizations:
HTTPBearer
query Parameters
days
integer (Days) [ 1 .. 30 ]
Default: 7

Responses

Response samples

Content type
application/json
null

Get Audit Categories

Get available audit categories and levels

Responses

Response samples

Content type
application/json
null

Cleanup Old Audit Events

Clean up old audit events (admin only)

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Compliance Report

Generate compliance audit report (admin only)

Authorizations:
HTTPBearer
query Parameters
days
integer (Days) [ 1 .. 365 ]
Default: 30

Responses

Response samples

Content type
application/json
null

websocket

Get Websocket Stats

Get WebSocket connection statistics

Responses

Response samples

Content type
application/json
null

analytics

Get Performance Dashboard

Get performance dashboard data

Authorizations:
HTTPBearer
query Parameters
hours
integer (Hours) [ 1 .. 720 ]
Default: 24

Responses

Response samples

Content type
application/json
null

Get Cost Breakdown

Get detailed cost breakdown and analysis

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Cost Automations

List recent automations with cost impact for cost history/accuracy views.

Authorizations:
HTTPBearer
query Parameters
days
integer (Days) [ 1 .. 365 ]
Default: 30
Service (string) or Service (null) (Service)

Optional service filter (e.g., cloudrun, bigquery, gke, cloudsql)

limit
integer (Limit) [ 1 .. 500 ]
Default: 100

Responses

Response samples

Content type
application/json
null

Get Alert Analytics

Get alert analytics and patterns

Authorizations:
HTTPBearer
query Parameters
days
integer (Days) [ 1 .. 30 ]
Default: 7

Responses

Response samples

Content type
application/json
null

Get Health Overview

Tenant-scoped health analytics built from agent runs and findings.

Authorizations:
HTTPBearer
query Parameters
days
integer (Days) [ 1 .. 90 ]
Default: 30
Project Id (string) or Project Id (null) (Project Id)

Filter by GCP project id/number when present in scan scope

Service (string) or Service (null) (Service)

Filter by agent service

bucket
string (Bucket) ^(day|week)$
Default: "day"

Aggregation bucket for trend data

Responses

Response samples

Content type
application/json
null

recommendations

Recommend For Alert

Authorizations:
HTTPBearer
query Parameters
limit
integer (Limit) [ 1 .. 10 ]
Default: 5
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Predict Cost

Authorizations:
HTTPBearer
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

agents

Agent Heartbeat

Authorizations:
HTTPBearer
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Agent Health

Authorizations:
HTTPBearer
query Parameters
window_minutes
integer (Window Minutes) [ 1 .. 120 ]
Default: 10

Responses

Response samples

Content type
application/json
null

Agents Catalog

Return a static catalog of supported services and tool types.

Responses

Response samples

Content type
application/json
null

Canonical Ops

Expose canonical operations per service for guardrail UIs.

query Parameters
Service (string) or Service (null) (Service)

Responses

Response samples

Content type
application/json
null

Get Quota Status

Get current quota usage status for the authenticated tenant.

FIX Critical Bug C2: Previously called get_plan_limits(context.tenant_id) which expects a tier name. Also referenced undefined variables in response.

Returns monthly or hourly advisor run quota usage and limits.

Authorizations:
HTTPBearer
query Parameters
quota_type
string (Quota Type) ^(monthly|hourly)$
Default: "monthly"

Responses

Response samples

Content type
application/json
null

Execute Agent Action

Execute an agent action. Used by internal automation runners.

agent_type: one of [cloudrun, gke, bigquery, cloudsql] payload: normalized alert dict expected by the specific agent

Authorizations:
HTTPBearer
path Parameters
agent_type
required
string (Agent Type)
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Agent Type Health

Lightweight agent health endpoint for supervisory checks.

This reflects whether we have a first-class in-process agent implementation for the given service key (e.g. cloudrun, bigquery, gke, cloudsql). Other services are handled via generic tooling pipelines and do not expose a dedicated agent health surface.

path Parameters
agent_type
required
string (Agent Type)

Responses

Response samples

Content type
application/json
null

Provision Agent

Provision/register an agent for a service.

For now, this verifies local agent availability and returns a basic status. For advise-only services, it returns provisioned=true without performing external health probes.

path Parameters
service
required
string (Service)

Responses

Response samples

Content type
application/json
null

Advise Service Async

Async advise endpoint with quota enforcement.

Args: run_type: "monitoring" (unlimited) or "advisor" (metered, enforces quota)

Authorizations:
HTTPBearer
path Parameters
service
required
string (Service)
query Parameters
run_type
string (Run Type) ^(monitoring|advisor)$
Default: "advisor"
Request Body schema: application/json
required
tenant_id
required
string (Tenant Id)
service
required
string (Service)
Enum: "cloudrun" "gke" "bigquery" "cloudsql" "gcs" "gce" "pubsub" "secretmgr"
ScopeSelector (object) or null
Scope Id (string) or Scope Id (null) (Scope Id)
Options (object) or Options (null) (Options)
Run Id (string) or Run Id (null) (Run Id)

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "service": "cloudrun",
  • "scope": {
    },
  • "scope_id": "string",
  • "options": { },
  • "run_id": "string"
}

Response samples

Content type
application/json
{
  • "job_id": "string",
  • "run_id": "string",
  • "status": "queued"
}

Remediate Service Async

Async remediation endpoint.

  • Performs synchronous guardrail checks (blast radius, basic shape) so obviously unsafe change sets fail fast.
  • Enforces plan gating and usage limits before enqueueing work.
  • Enqueues a remediation job for background execution.
Authorizations:
HTTPBearer
path Parameters
service
required
string (Service)
Request Body schema: application/json
required
tenant_id
required
string (Tenant Id)
service
required
string (Service)
Enum: "cloudrun" "gke" "bigquery" "cloudsql" "gcs" "gce" "pubsub" "secretmgr"
required
object (ChangeSet)
Run Id (string) or Run Id (null) (Run Id)
Guardrails (object) or null
Automation Id (string) or Automation Id (null) (Automation Id)

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "service": "cloudrun",
  • "approved_change_set": {
    },
  • "run_id": "string",
  • "guardrails": {
    },
  • "automation_id": "string"
}

Response samples

Content type
application/json
{
  • "job_id": "string",
  • "run_id": "string",
  • "status": "queued"
}

Get Run Artifacts

Return stored artifacts (diagnostics, prompts, reports) for a run.

Authorizations:
HTTPBearer
path Parameters
run_id
required
string (Run Id)
query Parameters
limit
integer (Limit) [ 1 .. 200 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
null

Patch Change Set

Edit a pending change set. Resets approval status and updates the plan steps.

Authorizations:
HTTPBearer
path Parameters
change_set_id
required
string (Change Set Id)
Request Body schema: application/json
required
required
Array of objects (Steps)

Full list of steps to replace current steps

Reason (string) or Reason (null) (Reason)

Reason for the edit

Responses

Request samples

Content type
application/json
{
  • "steps": [
    ],
  • "reason": "string"
}

Response samples

Content type
application/json
null

Get Run Summary

Fetch a comprehensive summary of a run, including its children (if any). Aggregates risk, findings, change sets, and artifacts into a single view.

Authorizations:
HTTPBearer
path Parameters
run_id
required
string (Run Id)

Responses

Response samples

Content type
application/json
null

Get Run View

Return the materialized run_view snapshot. If since_version is provided and the snapshot has not advanced, return an unchanged marker.

Authorizations:
HTTPBearer
path Parameters
run_id
required
string (Run Id)
query Parameters
Since Version (integer) or Since Version (null) (Since Version)

Responses

Response samples

Content type
application/json
null

Get Agent Run

Fetch a single agent run by internal UUID or external run id.

Authorizations:
HTTPBearer
path Parameters
run_id
required
string (Run Id)

Responses

Response samples

Content type
application/json
null

Get Run Change Set

Fetch the change set for a specific run.

Authorizations:
HTTPBearer
path Parameters
run_id
required
string (Run Id)

Responses

Response samples

Content type
application/json
null

List Findings

List findings for the current tenant (RBAC: view_analytics or read_automations).

Authorizations:
HTTPBearer
query Parameters
Service (string) or Service (null) (Service)
Severity (string) or Severity (null) (Severity)
Run (string) or Run (null) (Run)

Run UUID or external id

limit
integer (Limit) [ 1 .. 500 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
null

Get Platform Latest Runs

Platform admin dashboard: latest agent runs with findings/artifacts.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
query Parameters
per_service
integer (Per Service) [ 1 .. 5 ]
Default: 1
finding_limit
integer (Finding Limit) [ 0 .. 50 ]
Default: 10
artifact_limit
integer (Artifact Limit) [ 0 .. 20 ]
Default: 5

Responses

Response samples

Content type
application/json
null

List Runs

List agent runs for the current tenant (RBAC: view_analytics or read_automations).

Authorizations:
HTTPBearer
query Parameters
Service (string) or Service (null) (Service)
Status (string) or Status (null) (Status)
Scope Id (string) or Scope Id (null) (Scope Id)

Filter by Scope ID

Parent Id (string) or Parent Id (null) (Parent Id)

Filter by parent run id

root_only
boolean (Root Only)
Default: false

If true, only runs without a parent (parent_run_id is null)

limit
integer (Limit) [ 1 .. 500 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
null

Get Agent Schemas

Return JSON Schemas for advise/remediate contracts.

Useful for clients and for validating SmartSRE tool outputs.

Responses

Response samples

Content type
application/json
null

Simulate Risk Decision

Simulate how the current risk configuration would treat a proposed change.

Uses the authoritative AdvancedRiskEngine to determine the decision, ensuring parity with actual workflow execution logic (Profiles + Financial Limits + Heuristics).

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)

Service identifier, e.g. cloudrun, bigquery, gke, cloudsql, gcs

change_description
required
string (Change Description)

Human-readable description of the proposed change

Estimated Monthly Cost Change (number) or Estimated Monthly Cost Change (null) (Estimated Monthly Cost Change)

Estimated monthly cost delta in percent (positive for increase)

Risk Level Hint (string) or Risk Level Hint (null) (Risk Level Hint)

Optional risk level hint if already assessed

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "change_description": "string",
  • "estimated_monthly_cost_change": 0,
  • "risk_level_hint": "string"
}

Response samples

Content type
application/json
{ }

Trigger Synthesis

Manually trigger the synthesis process for a run. Useful if the auto-trigger failed or to retry analysis.

Authorizations:
HTTPBearer
path Parameters
run_id
required
string (Run Id)

Responses

Response samples

Content type
application/json
null

Submit Agent Feedback

Submit user feedback on a specific agent synthesis pattern. This feedback is used to improve future synthesis prompts.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
run_id
required
string (Run Id)

Run ID this feedback applies to

pattern_id
required
string (Pattern Id) ^[a-z0-9_]+_[a-f0-9]{8}$

Canonical pattern ID (service_hash)

sentiment
required
string (Sentiment) ^(useful|not_useful)$

Sentiment

Reason (string) or Reason (null) (Reason)

Reason for negative feedback

Comment (string) or Comment (null) (Comment)

Free text comment

Responses

Request samples

Content type
application/json
{
  • "run_id": "string",
  • "pattern_id": "string",
  • "sentiment": "string",
  • "reason": "string",
  • "comment": "string"
}

Response samples

Content type
application/json
null

reports

Generate Monthly Report

Authorizations:
HTTPBearer
query Parameters
months
integer (Months) [ 1 .. 12 ]
Default: 1
Email To (string) or Email To (null) (Email To)

Responses

Response samples

Content type
application/json
null

Get Latest Report Summary

Authorizations:
HTTPBearer
query Parameters
limit
integer (Limit) [ 1 .. 12 ]
Default: 1

Responses

Response samples

Content type
application/json
null

Get Report Schedule

Return saved report schedule from tenant risk_config (preferences).

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Save Report Schedule

Persist report schedule under tenant.risk_config.report_schedule.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
recipients
required
Array of strings (Recipients)
cadence
string (Cadence)
Default: "monthly"
day_of_month
integer (Day Of Month) [ 1 .. 28 ]
Default: 1
time
string (Time)
Default: "09:00"
timezone
string (Timezone)
Default: "Asia/Kolkata"

Responses

Request samples

Content type
application/json
{
  • "recipients": [
    ],
  • "cadence": "monthly",
  • "day_of_month": 1,
  • "time": "09:00",
  • "timezone": "Asia/Kolkata"
}

Response samples

Content type
application/json
null

Send Test Report

Send a one-off preview report to the provided email.

Authorizations:
HTTPBearer
query Parameters
to
required
string (To)

Responses

Response samples

Content type
application/json
null

onboarding

Get Onboarding Status Authenticated

Return onboarding status for the authenticated tenant (SPA flow).

Mirrors the information shape expected by the frontend:

  • tenant_id, completion_percentage, steps, current_step, total_steps
Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Update Onboarding Step Authenticated

Update onboarding step for the authenticated tenant (SPA flow).

Authorizations:
HTTPBearer
path Parameters
step_id
required
string (Step Id)
Request Body schema: application/json
required
status
string (Status)
Default: "completed"
object (Data)
Default: {}

Responses

Request samples

Content type
application/json
{
  • "status": "completed",
  • "data": { }
}

Response samples

Content type
application/json
null

Customer Signup

Self-service customer signup with automated tenant creation Creates tenant, sends welcome email, and starts onboarding flow

Request Body schema: application/json
required
organization_name
required
string (Organization Name)
admin_email
required
string (Admin Email)
admin_name
required
string (Admin Name)
subscription_tier
string (Subscription Tier)
Default: "starter"
Company Size (string) or Company Size (null) (Company Size)
Use Case (string) or Use Case (null) (Use Case)
Referral Source (string) or Referral Source (null) (Referral Source)
Password (string) or Password (null) (Password)

Responses

Request samples

Content type
application/json
{
  • "organization_name": "string",
  • "admin_email": "string",
  • "admin_name": "string",
  • "subscription_tier": "starter",
  • "company_size": "string",
  • "use_case": "string",
  • "referral_source": "string",
  • "password": "string"
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "tenant_id": "string",
  • "organization_name": "string",
  • "estimated_setup_time": "string",
  • "next_url": "string",
  • "next_steps": [
    ]
}

Signup Status

Return tenant metadata for a given GCP project (dev/test helper guarded by reset token).

query Parameters
gcp_project_id
required
string (Gcp Project Id)

Responses

Response samples

Content type
application/json
{
  • "tenant_id": "string",
  • "organization_name": "string",
  • "project_id": "string",
  • "completion_percentage": 0,
  • "current_step": 0,
  • "total_steps": 0
}

Customer Signup Google

Google OAuth-based signup that auto-creates a tenant.

Request Body schema: application/json
required
id_token
required
string (Id Token)
organization_name
required
string (Organization Name)
Admin Name (string) or Admin Name (null) (Admin Name)
subscription_tier
string (Subscription Tier)
Default: "starter"
Company Size (string) or Company Size (null) (Company Size)
Use Case (string) or Use Case (null) (Use Case)
Referral Source (string) or Referral Source (null) (Referral Source)

Responses

Request samples

Content type
application/json
{
  • "id_token": "string",
  • "organization_name": "string",
  • "admin_name": "string",
  • "subscription_tier": "starter",
  • "company_size": "string",
  • "use_case": "string",
  • "referral_source": "string"
}

Response samples

Content type
application/json
null

Detect Services

Detect active services in the specified GCP project.

This endpoint now returns immediately (202 Accepted) and performs discovery in the background.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
project_id
required
string (Project Id)
Array of Services (strings) or Services (null) (Services)

Responses

Request samples

Content type
application/json
{
  • "project_id": "string",
  • "services": [
    ]
}

Response samples

Content type
application/json
null

Automated Setup Authenticated

Trigger the automated validation and discovery saga in the background.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
project_id
required
string (Project Id)

Responses

Request samples

Content type
application/json
{
  • "project_id": "string"
}

Response samples

Content type
application/json
null

Automated Gcp Setup Authenticated

Authorizations:
HTTPBearer
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Validate Gcp Authenticated

Authorizations:
HTTPBearer
Request Body schema: multipart/form-data
Credentials (string) or Credentials (null) (Credentials)
Project Id (string) or Project Id (null) (Project Id)

Responses

Response samples

Content type
application/json
null

Validate Gcp Authenticated Get

GET variant of GCP validation to support simple curl/browser calls.

Uses the authenticated tenant from the SecurityContext. The optional customer_id query parameter is accepted for compatibility but is not required and is ignored if it does not match the authenticated tenant.

Authorizations:
HTTPBearer
query Parameters
Customer Id (string) or Customer Id (null) (Customer Id)

Responses

Response samples

Content type
application/json
null

Get Gcp Setup Script

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Gcp Automation Upgrade

Return an automation-focused setup script for a single service.

This is used when a tenant initially configured discovery-only access and later opts into automation for a specific service. The script is idempotent and safe to re-run; it reuses the same impersonation-based model as the primary GCP setup flow.

Authorizations:
HTTPBearer
query Parameters
service
required
string (Service)

Service key to enable automation for (e.g. cloudrun, bigquery, cloudsql)

Responses

Response samples

Content type
application/json
null

Get Risk Config

Get current risk configuration for the tenant

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Save Risk Config

Save risk configuration during onboarding

Authorizations:
HTTPBearer
Request Body schema: application/json
required
auto_apply_cost_threshold
number (Auto Apply Cost Threshold)
Default: 50
auto_apply_risk_level
string (Auto Apply Risk Level)
Default: "low"
Enum: "low" "medium" "high"
require_approval_for_production
boolean (Require Approval For Production)
Default: true
require_approval_for_cost_above
number (Require Approval For Cost Above)
Default: 500
approval_timeout_hours
integer (Approval Timeout Hours)
Default: 24
allowed_services_for_auto_apply
Array of strings (Allowed Services For Auto Apply)
Default: ["cloudrun","gcs"]
blocked_services
Array of strings (Blocked Services)
Default: []
notify_on_auto_apply
boolean (Notify On Auto Apply)
Default: true
notify_channels
Array of strings (Notify Channels)
Default: ["email"]

Responses

Request samples

Content type
application/json
{
  • "auto_apply_cost_threshold": 50,
  • "auto_apply_risk_level": "low",
  • "require_approval_for_production": true,
  • "require_approval_for_cost_above": 500,
  • "approval_timeout_hours": 24,
  • "allowed_services_for_auto_apply": [
    ],
  • "blocked_services": [ ],
  • "notify_on_auto_apply": true,
  • "notify_channels": [
    ]
}

Response samples

Content type
application/json
null

Get Compliance Checklist

Get compliance checklist status for enterprise tier

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Save Compliance Checklist

Save compliance checklist for enterprise tier

Authorizations:
HTTPBearer
Request Body schema: application/json
required
sso_configured
boolean (Sso Configured)
Default: false
mfa_enforced
boolean (Mfa Enforced)
Default: false
audit_logging_enabled
boolean (Audit Logging Enabled)
Default: true
data_retention_days
integer (Data Retention Days)
Default: 2555
encryption_at_rest
boolean (Encryption At Rest)
Default: true
encryption_in_transit
boolean (Encryption In Transit)
Default: true
principle_of_least_privilege
boolean (Principle Of Least Privilege)
Default: false
regular_access_reviews
boolean (Regular Access Reviews)
Default: false
gdpr_compliant
boolean (Gdpr Compliant)
Default: false
soc2_compliant
boolean (Soc2 Compliant)
Default: false
iso27001_compliant
boolean (Iso27001 Compliant)
Default: false
incident_response_plan
boolean (Incident Response Plan)
Default: false
security_contacts_configured
boolean (Security Contacts Configured)
Default: false

Responses

Request samples

Content type
application/json
{
  • "sso_configured": false,
  • "mfa_enforced": false,
  • "audit_logging_enabled": true,
  • "data_retention_days": 2555,
  • "encryption_at_rest": true,
  • "encryption_in_transit": true,
  • "principle_of_least_privilege": false,
  • "regular_access_reviews": false,
  • "gdpr_compliant": false,
  • "soc2_compliant": false,
  • "iso27001_compliant": false,
  • "incident_response_plan": false,
  • "security_contacts_configured": false
}

Response samples

Content type
application/json
null

List Invitations

List invitations for the current tenant.

Authorizations:
HTTPBearer
query Parameters
Status (string) or Status (null) (Status)
page
integer (Page) >= 1
Default: 1
page_size
integer (Page Size) [ 1 .. 100 ]
Default: 25

Responses

Response samples

Content type
application/json
null

Send Invitation

Send a team invitation.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
email
required
string (Email)
Name (string) or Name (null) (Name)
role
string (Role)
Default: "user"
Enum: "user" "viewer" "admin" "platform_admin"

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "name": "string",
  • "role": "user"
}

Response samples

Content type
application/json
null

Accept Invitation

Accept an invitation and provision the user in the tenant.

Authorizations:
HTTPBearer
path Parameters
invitation_id
required
string (Invitation Id)

Responses

Response samples

Content type
application/json
null

Decline Invitation

Decline an invitation.

Authorizations:
HTTPBearer
path Parameters
invitation_id
required
string (Invitation Id)

Responses

Response samples

Content type
application/json
null

Revoke Invitation

Revoke an invitation.

Authorizations:
HTTPBearer
path Parameters
invitation_id
required
string (Invitation Id)

Responses

Response samples

Content type
application/json
null

Resend Invitation

Resend an invitation.

Authorizations:
HTTPBearer
path Parameters
invitation_id
required
string (Invitation Id)

Responses

Response samples

Content type
application/json
null

Save Risk Guardrails Onboarding

Save risk guardrails during onboarding. Bypasses the 'manage_risk_config' permission check (which requires MFA) as this is part of the initial setup flow for authenticated admins.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
Cloudsql Require Approval (boolean) or Cloudsql Require Approval (null) (Cloudsql Require Approval)
Array of Cloudsql Allowed Hours (integers) or Cloudsql Allowed Hours (null) (Cloudsql Allowed Hours)

[start,end] in 0..24 UTC

Gke Max Nodes (integer) or Gke Max Nodes (null) (Gke Max Nodes)
Gke Min Nodes (integer) or Gke Min Nodes (null) (Gke Min Nodes)
Gke Max Hpa Max (integer) or Gke Max Hpa Max (null) (Gke Max Hpa Max)
Bigquery Max Slots (integer) or Bigquery Max Slots (null) (Bigquery Max Slots)
Bigquery Min Slots (integer) or Bigquery Min Slots (null) (Bigquery Min Slots)
Bigquery Require Approval (boolean) or Bigquery Require Approval (null) (Bigquery Require Approval)
Array of Cloudrun Allowed Ops (strings) or Cloudrun Allowed Ops (null) (Cloudrun Allowed Ops)
Array of Bigquery Allowed Ops (strings) or Bigquery Allowed Ops (null) (Bigquery Allowed Ops)
Array of Gke Allowed Ops (strings) or Gke Allowed Ops (null) (Gke Allowed Ops)
Array of Cloudsql Allowed Ops (strings) or Cloudsql Allowed Ops (null) (Cloudsql Allowed Ops)
Array of Gcs Allowed Ops (strings) or Gcs Allowed Ops (null) (Gcs Allowed Ops)
Array of Secretmgr Allowed Ops (strings) or Secretmgr Allowed Ops (null) (Secretmgr Allowed Ops)
CloudSQLGuardrails (object) or null
BigQueryGuardrails (object) or null
GKEGuardrails (object) or null
CloudRunGuardrails (object) or null
SimpleOpsGuardrails (object) or null
SimpleOpsGuardrails (object) or null

Responses

Request samples

Content type
application/json
{
  • "cloudsql_require_approval": true,
  • "cloudsql_allowed_hours": [
    ],
  • "gke_max_nodes": 0,
  • "gke_min_nodes": 0,
  • "gke_max_hpa_max": 0,
  • "bigquery_max_slots": 0,
  • "bigquery_min_slots": 0,
  • "bigquery_require_approval": true,
  • "cloudrun_allowed_ops": [
    ],
  • "bigquery_allowed_ops": [
    ],
  • "gke_allowed_ops": [
    ],
  • "cloudsql_allowed_ops": [
    ],
  • "gcs_allowed_ops": [
    ],
  • "secretmgr_allowed_ops": [
    ],
  • "cloud_sql": {
    },
  • "bigquery": {
    },
  • "gke": {
    },
  • "cloudrun": {
    },
  • "gcs": {
    },
  • "secretmgr": {
    }
}

Response samples

Content type
application/json
{ }

workflows

List Workflows

List all workflows for the current tenant

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Create Workflow

Create a new custom workflow

Authorizations:
HTTPBearer
Request Body schema: application/json
required
name
required
string (Name)
Description (string) or Description (null) (Description)
Default: ""
required
Array of objects (Nodes)
required
Array of objects (Edges)
enabled
boolean (Enabled)
Default: true
tags
Array of strings (Tags)
Default: []
Scope Id (string) or Scope Id (null) (Scope Id)
State Schema (object) or State Schema (null) (State Schema)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "",
  • "nodes": [
    ],
  • "edges": [
    ],
  • "enabled": true,
  • "tags": [ ],
  • "scope_id": "string",
  • "state_schema": { }
}

Response samples

Content type
application/json
null

Get Workflow

Get a specific workflow by ID

Authorizations:
HTTPBearer
path Parameters
workflow_id
required
string (Workflow Id)

Responses

Response samples

Content type
application/json
null

Update Workflow

Update an existing workflow

Authorizations:
HTTPBearer
path Parameters
workflow_id
required
string (Workflow Id)
Request Body schema: application/json
required
name
required
string (Name)
Description (string) or Description (null) (Description)
Default: ""
required
Array of objects (Nodes)
required
Array of objects (Edges)
enabled
boolean (Enabled)
Default: true
tags
Array of strings (Tags)
Default: []
Scope Id (string) or Scope Id (null) (Scope Id)
State Schema (object) or State Schema (null) (State Schema)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "",
  • "nodes": [
    ],
  • "edges": [
    ],
  • "enabled": true,
  • "tags": [ ],
  • "scope_id": "string",
  • "state_schema": { }
}

Response samples

Content type
application/json
null

Delete Workflow

Delete a workflow

Authorizations:
HTTPBearer
path Parameters
workflow_id
required
string (Workflow Id)

Responses

Response samples

Content type
application/json
null

Execute Workflow Endpoint

Execute a workflow (Saved only for V2 engine)

Authorizations:
HTTPBearer
Request Body schema: application/json
required
Workflow Id (string) or Workflow Id (null) (Workflow Id)
Array of Nodes (objects) or Nodes (null) (Nodes)
Array of Edges (objects) or Edges (null) (Edges)
object (Input)
Default: {}
Trigger Data (object) or Trigger Data (null) (Trigger Data)

Responses

Request samples

Content type
application/json
{
  • "workflow_id": "string",
  • "nodes": [
    ],
  • "edges": [
    ],
  • "input": { },
  • "trigger_data": { }
}

Response samples

Content type
application/json
null

Resume Execution

Resume a paused workflow execution (Human-in-the-Loop)

Authorizations:
HTTPBearer
path Parameters
execution_id
required
string (Execution Id)
Request Body schema: application/json
required
decision
required
string (Decision)
object (State Updates)
Default: {}

Responses

Request samples

Content type
application/json
{
  • "decision": "string",
  • "state_updates": { }
}

Response samples

Content type
application/json
null

Get Execution

Get a single workflow execution by ID (detail view for E2E verification).

Authorizations:
HTTPBearer
path Parameters
execution_id
required
string (Execution Id)

Responses

Response samples

Content type
application/json
null

List Executions

List executions

Authorizations:
HTTPBearer
query Parameters
Workflow Id (string) or Workflow Id (null) (Workflow Id)
limit
integer (Limit)
Default: 50
offset
integer (Offset)
Default: 0

Responses

Response samples

Content type
application/json
null

workflow-templates

List Templates

List available workflow templates.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Template

Create a new custom workflow template for the tenant.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
name
required
string (Name)
required
Description (string) or Description (null) (Description)
required
object (Definition)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "definition": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "definition": { },
  • "is_system": true,
  • "version": 0
}

Get Template

Get a specific workflow template.

Authorizations:
HTTPBearer
path Parameters
template_id
required
string (Template Id)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "definition": { },
  • "is_system": true,
  • "version": 0
}

Update Template

Update an existing custom workflow template.

Authorizations:
HTTPBearer
path Parameters
template_id
required
string (Template Id)
Request Body schema: application/json
required
required
Name (string) or Name (null) (Name)
required
Description (string) or Description (null) (Description)
required
Definition (object) or Definition (null) (Definition)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "definition": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "definition": { },
  • "is_system": true,
  • "version": 0
}

support

Diagnose Issue

Automatically diagnose an issue and provide troubleshooting steps

Authorizations:
HTTPBearer
Request Body schema: application/json
required
issue_description
required
string (Issue Description)
Error Message (string) or Error Message (null) (Error Message)
Context (object) or Context (null) (Context)
Category (string) or Category (null) (Category)

Responses

Request samples

Content type
application/json
{
  • "issue_description": "string",
  • "error_message": "string",
  • "context": { },
  • "category": "string"
}

Response samples

Content type
application/json
null

Get Troubleshooting Guides

Get available troubleshooting guides

query Parameters
Category (string) or Category (null) (Category)

Responses

Response samples

Content type
application/json
null

Create Support Ticket

Create a support ticket for complex issues

Authorizations:
HTTPBearer
Request Body schema: application/json
required
issue_description
required
string (Issue Description)
Error Message (string) or Error Message (null) (Error Message)
Context (object) or Context (null) (Context)
Category (string) or Category (null) (Category)

Responses

Request samples

Content type
application/json
{
  • "issue_description": "string",
  • "error_message": "string",
  • "context": { },
  • "category": "string"
}

Response samples

Content type
application/json
null

Perform Health Check

Perform comprehensive health check for tenant setup

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string (Tenant Id)

Responses

Response samples

Content type
application/json
null

system

Get Risk Profiles

Get available risk safety profiles.

Responses

Response samples

Content type
application/json
null

Health Check

Detailed health check with legacy-compatible shape.

Responses

Response samples

Content type
application/json
null

Metrics

Prometheus metrics endpoint

Responses

Scheduler Info

Expose scheduler status and advise interval for UI display.

Reports the live scheduler state rather than a feature flag.

Responses

Response samples

Content type
application/json
null

Get Scheduler Floor

Return platform-wide minimum advise interval in minutes (default 30).

Responses

Response samples

Content type
application/json
null

Set Scheduler Floor

Set platform-wide minimum advise interval (platform admin only).

Authorizations:
HTTPBearer
Request Body schema: application/json
required
property name*
additional property
any

Responses

Request samples

Content type
application/json
{ }

Response samples

Content type
application/json
null

Feature Status

Report diagnostic configuration based on runtime availability (no flags).

Responses

Response samples

Content type
application/json
null

Get Performance Stats

Get performance optimization statistics

Responses

Response samples

Content type
application/json
null

Get Agent Pool Stats

Get async agent pool statistics

Responses

Response samples

Content type
application/json
null

Get Error Summary

Get error summary and statistics from agent pool

Responses

Response samples

Content type
application/json
null

Get Database Performance

Get database performance statistics

Responses

Response samples

Content type
application/json
null

Get Cache Performance

Get cache performance statistics

Responses

Response samples

Content type
application/json
null

Warm Cache

Manually trigger cache warming

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Trigger Database Maintenance

Trigger database maintenance tasks

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

Get Performance Summary

Get comprehensive performance summary

Responses

Response samples

Content type
application/json
null

internal

Internal Reset Db

Deprecated helper endpoint: instructs developers to reset DB manually.

Responses

Response samples

Content type
application/json
null

Internal Enqueue Advise

Enqueue an advise job for the given service (internal only).

Requires a valid access token with manage_services or read_automations.

Request Body schema: application/json
required
Tenant Id (string) or Tenant Id (null) (Tenant Id)
service
required
string (Service)

Target service key, e.g. cloudrun

Scope (object) or Scope (null) (Scope)
Reason (string) or Reason (null) (Reason)
Trigger (string) or Trigger (null) (Trigger)

manual|schedule|alert

Selectors (object) or Selectors (null) (Selectors)
Idempotency Key (string) or Idempotency Key (null) (Idempotency Key)

Optional client-supplied id to dedupe requests

Priority (string) or Priority (null) (Priority)

Optional priority hint: 'low' routes to low-priority queue if configured

Schedule Seconds (integer) or Schedule Seconds (null) (Schedule Seconds)

Optionally delay execution by N seconds (jitter)

Responses

Request samples

Content type
application/json
{
  • "tenant_id": "string",
  • "service": "string",
  • "scope": { },
  • "reason": "string",
  • "trigger": "string",
  • "selectors": { },
  • "idempotency_key": "string",
  • "priority": "string",
  • "schedule_seconds": 0
}

Response samples

Content type
application/json
{
  • "job_id": "string",
  • "run_id": "string",
  • "status": "queued"
}

Internal Pubsub Advise Push

Pub/Sub push endpoint to enqueue advise from alerts.

Expects Pub/Sub push JSON with base64-encoded message.data containing: { tenant_id, service, scope?, reason? }. Enqueues finalize via Cloud Tasks.

Responses

Response samples

Content type
application/json
null

Internal Metrics Snapshot

Snapshot current Redis metrics to PostgreSQL.

Called by Cloud Scheduler (hourly in production). Manually callable in local dev: curl -X POST http://localhost:8081/internal/metrics/snapshot

Authorization: OIDC audience (Cloud Scheduler) or platform admin

Responses

Response samples

Content type
application/json
null

admin

List Prompts

Authorizations:
HTTPBearer
query Parameters
Service (string) or Service (null) (Service)
Intent (string) or Intent (null) (Intent)
include_all_versions
boolean (Include All Versions)
Default: false

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Prompt Template

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)

cloudrun|bigquery|gke|cloud_sql

intent
required
string (Intent)

advise_change_set|cold_start|slot_optimization|...

template_text
required
string (Template Text)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "intent": "string",
  • "template_text": "string",
  • "tenant_id": "string"
}

Response samples

Content type
application/json
{
  • "template_id": "string",
  • "tenant_id": "string",
  • "service": "string",
  • "intent": "string",
  • "version": 0,
  • "is_active": true,
  • "updated_by": "string",
  • "template_text": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Get Prompt Seed Status

Report seeding status for known (service, intent) pairs.

  • has_db_template: a PromptTemplate exists in the database.
  • has_global_config: a GlobalConfiguration entry exists for prompts.{service}.{intent}.
  • has_file: on-disk Jinja templates exist for the pair.
  • seeded: synonym for has_db_template.
Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Seed Prompts

Trigger seeding of prompt templates from on-disk Jinja files into the database.

This uses the same resolution path as the runtime (ConfigurationService.get_prompt_template), but is exposed as an explicit admin operation instead of relying on first-use.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Preview Prompt

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)
intent
required
string (Intent)
Tenant Id (string) or Tenant Id (null) (Tenant Id)
Template Text (string) or Template Text (null) (Template Text)
Scope (object) or Scope (null) (Scope)
Signals (object) or Signals (null) (Signals)
Caps (object) or Caps (null) (Caps)
Region (string) or Region (null) (Region)

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "intent": "string",
  • "tenant_id": "string",
  • "template_text": "string",
  • "scope": { },
  • "signals": { },
  • "caps": { },
  • "region": "string"
}

Response samples

Content type
application/json
{ }

Get Resolved Prompt

Return the resolved template text and source (tenant|global|global_config|file|none).

Authorizations:
HTTPBearer
query Parameters
service
required
string (Service)
intent
required
string (Intent)
Tenant Id (string) or Tenant Id (null) (Tenant Id)

Responses

Response samples

Content type
application/json
{ }

Deactivate Prompt Template

Authorizations:
HTTPBearer
path Parameters
template_id
required
string (Template Id)

Responses

Response samples

Content type
application/json
{ }

List Compression Configs

List all compression configuration priorities.

Access: Platform admin only

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Compression Config

Get compression configuration for a specific service.

Access: Platform admin only

Authorizations:
HTTPBearer
path Parameters
service
required
string (Service)

Responses

Response samples

Content type
application/json
{
  • "service": "string",
  • "priority_keys": [
    ],
  • "description": "string",
  • "created_at": "string",
  • "updated_at": "string"
}

Update Compression Config

Update compression configuration for a service.

Creates new config if it doesn't exist.

Access: Platform admin only

Authorizations:
HTTPBearer
path Parameters
service
required
string (Service)
Request Body schema: application/json
required
service
required
string (Service)
priority_keys
required
Array of strings (Priority Keys)
Description (string) or Description (null) (Description)

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "priority_keys": [
    ],
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "service": "string",
  • "priority_keys": [
    ],
  • "description": "string",
  • "created_at": "string",
  • "updated_at": "string"
}

Delete Compression Config

Delete compression configuration for a service.

Access: Platform admin only

Authorizations:
HTTPBearer
path Parameters
service
required
string (Service)

Responses

Response samples

Content type
application/json
null

Get Feedback Summary

Get overall feedback statistics.

Requires: Platform admin access

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "total_feedback_count": 0,
  • "unique_findings_with_feedback": 0,
  • "disputed_finding_types": 0,
  • "avg_feedback_per_finding_type": 0,
  • "feedback_by_status": { },
  • "suggestions_by_severity": { }
}

Get Feedback By Type

Get aggregated feedback grouped by finding type.

Requires: Platform admin access

Authorizations:
HTTPBearer
query Parameters
disputed_only
boolean (Disputed Only)
Default: false

Only show disputed finding types

min_feedback_count
integer (Min Feedback Count)
Default: 1

Minimum feedback count to include

limit
integer (Limit) <= 100
Default: 50

Max results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update Severity Metadata

Update finding type severity metadata based on reviewed feedback.

Requires: Platform admin access

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)
kind
required
string (Kind)
new_severity
required
string (New Severity)
Enum: "critical" "high" "medium" "low"
reason
required
string (Reason) <= 500 characters

Why this change is being made

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "kind": "string",
  • "new_severity": "critical",
  • "reason": "string"
}

Response samples

Content type
application/json
null

scopes

List Scopes

List all scopes for the tenant, optionally filtered by service.

Authorizations:
HTTPBearer
query Parameters
Service (string) or Service (null) (Service)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Scope

Create a new scope.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
Service (string) or Service (null) (Service)
Params (object) or Params (null) (Params)
Array of Targets (objects) or Targets (null) (Targets)
human_label
required
string (Human Label)
is_default
boolean (Is Default)
Default: false
Risk Profile (string) or Risk Profile (null) (Risk Profile)
Policy (object) or Policy (null) (Policy)
Scheduler Config (object) or Scheduler Config (null) (Scheduler Config)
Owner Team Id (string) or Owner Team Id (null) (Owner Team Id)

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "params": { },
  • "targets": [
    ],
  • "human_label": "string",
  • "is_default": false,
  • "risk_profile": "string",
  • "policy": { },
  • "scheduler_config": { },
  • "owner_team_id": "string"
}

Response samples

Content type
application/json
{
  • "scope_id": "string",
  • "service": "string",
  • "human_label": "string",
  • "params": { },
  • "targets": [ ],
  • "is_default": true,
  • "risk_profile": "string",
  • "policy": { },
  • "scheduler_config": { },
  • "owner_team_id": "string",
  • "created_at": "string",
  • "updated_at": "string"
}

Scope Coverage

Return a lightweight coverage summary for scopes vs active inventory.

This powers the Scopes Control Center view and is derived from the same matching logic used by the InventoryService, so UI coverage matches what the scheduler/executor will see.

Authorizations:
HTTPBearer
query Parameters
Service (string) or Service (null) (Service)

Optional service key (e.g. cloudrun, bigquery)

Responses

Response samples

Content type
application/json
null

Diagnose Scope Policy

Diagnose how scopes and their policies apply to a specific resource.

This endpoint is a thin wrapper around InventoryService.test_policy_for_resource and merge_scope_policies. It answers:

  • Which scopes match this resource?
  • What is the effective merged scope policy?
  • For each simulated action, is it allowed by the effective allowed_ops intersection, and which scopes contribute to that decision?
Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)
Project Id (string) or Project Id (null) (Project Id)
Region (string) or Region (null) (Region)
Dataset Id (string) or Dataset Id (null) (Dataset Id)
Resource Id (string) or Resource Id (null) (Resource Id)
Resource Name (string) or Resource Name (null) (Resource Name)
Resource Key (string) or Resource Key (null) (Resource Key)
Array of Actions (strings) or Actions (null) (Actions)

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "project_id": "string",
  • "region": "string",
  • "dataset_id": "string",
  • "resource_id": "string",
  • "resource_name": "string",
  • "resource_key": "string",
  • "actions": [
    ]
}

Response samples

Content type
application/json
{
  • "service": "string",
  • "project_id": "string",
  • "region": "string",
  • "dataset_id": "string",
  • "resource_id": "string",
  • "resource_name": "string",
  • "effective_policy": { },
  • "matched_scopes": [
    ],
  • "actions": [
    ]
}

Update Scope

Update an existing scope.

Authorizations:
HTTPBearer
path Parameters
scope_id
required
string <uuid> (Scope Id)
Request Body schema: application/json
required
Human Label (string) or Human Label (null) (Human Label)
Params (object) or Params (null) (Params)
Array of Targets (objects) or Targets (null) (Targets)
Is Default (boolean) or Is Default (null) (Is Default)
Risk Profile (string) or Risk Profile (null) (Risk Profile)
Policy (object) or Policy (null) (Policy)
Scheduler Config (object) or Scheduler Config (null) (Scheduler Config)
Owner Team Id (string) or Owner Team Id (null) (Owner Team Id)

Responses

Request samples

Content type
application/json
{
  • "human_label": "string",
  • "params": { },
  • "targets": [
    ],
  • "is_default": true,
  • "risk_profile": "string",
  • "policy": { },
  • "scheduler_config": { },
  • "owner_team_id": "string"
}

Response samples

Content type
application/json
{
  • "scope_id": "string",
  • "service": "string",
  • "human_label": "string",
  • "params": { },
  • "targets": [ ],
  • "is_default": true,
  • "risk_profile": "string",
  • "policy": { },
  • "scheduler_config": { },
  • "owner_team_id": "string",
  • "created_at": "string",
  • "updated_at": "string"
}

Delete Scope

Delete a scope.

Authorizations:
HTTPBearer
path Parameters
scope_id
required
string <uuid> (Scope Id)

Responses

Response samples

Content type
application/json
null

Set Default Scope

Set a specific scope as default for its service.

Authorizations:
HTTPBearer
path Parameters
scope_id
required
string <uuid> (Scope Id)

Responses

Response samples

Content type
application/json
null

Patch Scope Policy

Apply a targeted patch to a scope's policy.

Currently supports add_allowed_op for policy.allowed_ops so that UIs can relax guardrails safely without rewriting the entire Scope.

Authorizations:
HTTPBearer
path Parameters
scope_id
required
string <uuid> (Scope Id)
Request Body schema: application/json
required
op
required
string (Op)

Patch operation type (currently only add_allowed_op)

Value: "add_allowed_op"
value
required
string (Value)

Operation identifier to add to policy.allowed_ops

Responses

Request samples

Content type
application/json
{
  • "op": "add_allowed_op",
  • "value": "string"
}

Response samples

Content type
application/json
{
  • "scope_id": "string",
  • "service": "string",
  • "human_label": "string",
  • "params": { },
  • "targets": [ ],
  • "is_default": true,
  • "risk_profile": "string",
  • "policy": { },
  • "scheduler_config": { },
  • "owner_team_id": "string",
  • "created_at": "string",
  • "updated_at": "string"
}

Create Scope Saga

Authorizations:
HTTPBearer
Request Body schema: application/json
required
object (Initial Context)
Scope Id (string) or Scope Id (null) (Scope Id)

Responses

Request samples

Content type
application/json
{
  • "initial_context": { },
  • "scope_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "scope_id": "string",
  • "status": "string",
  • "current_step": "string",
  • "data": { },
  • "validation_results": { },
  • "created_at": "string",
  • "updated_at": "string"
}

Get Scope Saga

Authorizations:
HTTPBearer
path Parameters
saga_id
required
string (Saga Id)

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "scope_id": "string",
  • "status": "string",
  • "current_step": "string",
  • "data": { },
  • "validation_results": { },
  • "created_at": "string",
  • "updated_at": "string"
}

Update Scope Saga Target Step

Authorizations:
HTTPBearer
path Parameters
saga_id
required
string (Saga Id)
Request Body schema: application/json
required
Project Id (string) or Project Id (null) (Project Id)
Service (string) or Service (null) (Service)
Region (string) or Region (null) (Region)
Dataset Id (string) or Dataset Id (null) (Dataset Id)
Human Label (string) or Human Label (null) (Human Label)
object (Extra)
Array of Targets (objects) or Targets (null) (Targets)

Responses

Request samples

Content type
application/json
{
  • "project_id": "string",
  • "service": "string",
  • "region": "string",
  • "dataset_id": "string",
  • "human_label": "string",
  • "extra": { },
  • "targets": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "scope_id": "string",
  • "status": "string",
  • "current_step": "string",
  • "data": { },
  • "validation_results": { },
  • "created_at": "string",
  • "updated_at": "string"
}

Update Scope Saga Governance Step

Authorizations:
HTTPBearer
path Parameters
saga_id
required
string (Saga Id)
Request Body schema: application/json
required
Risk Profile (string) or Risk Profile (null) (Risk Profile)
Policy (object) or Policy (null) (Policy)
Owner Team Id (string) or Owner Team Id (null) (Owner Team Id)
object (Extra)

Responses

Request samples

Content type
application/json
{
  • "risk_profile": "string",
  • "policy": { },
  • "owner_team_id": "string",
  • "extra": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "scope_id": "string",
  • "status": "string",
  • "current_step": "string",
  • "data": { },
  • "validation_results": { },
  • "created_at": "string",
  • "updated_at": "string"
}

Update Scope Saga Schedule Step

Authorizations:
HTTPBearer
path Parameters
saga_id
required
string (Saga Id)
Request Body schema: application/json
required
Scheduler Config (object) or Scheduler Config (null) (Scheduler Config)
object (Extra)

Responses

Request samples

Content type
application/json
{
  • "scheduler_config": { },
  • "extra": { }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "scope_id": "string",
  • "status": "string",
  • "current_step": "string",
  • "data": { },
  • "validation_results": { },
  • "created_at": "string",
  • "updated_at": "string"
}

Commit Scope Saga

Authorizations:
HTTPBearer
path Parameters
saga_id
required
string (Saga Id)

Responses

Response samples

Content type
application/json
{
  • "saga": {
    },
  • "scope_id": "string"
}

inventory

List Inventory Resources

List discovered/active/ignored resources for the current tenant.

Authorizations:
HTTPBearer
query Parameters
tab
string (Tab) ^(discovered|active|ignored|all)$
Default: "discovered"
Service (string) or Service (null) (Service)
Environment (string) or Environment (null) (Environment)
Status (string) or Status (null) (Status)
Search (string) or Search (null) (Search)
Project Id (string) or Project Id (null) (Project Id)
Region (string) or Region (null) (Region)
Dataset Id (string) or Dataset Id (null) (Dataset Id)
limit
integer (Limit) [ 1 .. 100 ]
Default: 25
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "total": 0
}

Get Inventory Resource

Return a single inventory resource with effective configuration.

Authorizations:
HTTPBearer
path Parameters
discovered_scope_id
required
string (Discovered Scope Id)

Responses

Response samples

Content type
application/json
null

Bulk Update Inventory Status

Bulk update status (pending/active/ignored) for discovered resources.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
ids
required
Array of strings (Ids)
status
required
string (Status)

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ],
  • "status": "string"
}

Response samples

Content type
application/json
null

Export Inventory Resource

Export a JSON snapshot for a single inventory resource.

Authorizations:
HTTPBearer
path Parameters
discovered_scope_id
required
string (Discovered Scope Id)

Responses

Response samples

Content type
application/json
null

Policy Diagnostics

Return merged scope policy and matching scopes for a given service.

This endpoint is intended for debugging scope overlaps and understanding which guardrails apply before automation is executed. It currently resolves policies at the service level; future revisions may accept resource identifiers to provide per-resource diagnostics.

Authorizations:
HTTPBearer
query Parameters
service
required
string (Service)

Service key (e.g. cloudrun, bigquery)

Project Id (string) or Project Id (null) (Project Id)

Optional GCP project id for context

Responses

Response samples

Content type
application/json
null

Policy Test

Policy Tester endpoint.

Given a hypothetical resource (service + project + optional region/dataset), return which scopes would match it and the merged effective scope policy.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)
Project Id (string) or Project Id (null) (Project Id)
Region (string) or Region (null) (Region)
Dataset Id (string) or Dataset Id (null) (Dataset Id)
Resource Id (string) or Resource Id (null) (Resource Id)
Resource Name (string) or Resource Name (null) (Resource Name)

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "project_id": "string",
  • "region": "string",
  • "dataset_id": "string",
  • "resource_id": "string",
  • "resource_name": "string"
}

Response samples

Content type
application/json
null

teams

List Teams

List all teams in the tenant.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Team

Create a new team.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
name
required
string (Name)
Description (string) or Description (null) (Description)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "member_count": 0,
  • "created_at": "string"
}

Update Team

Update a team.

Authorizations:
HTTPBearer
path Parameters
team_id
required
string <uuid> (Team Id)
Request Body schema: application/json
required
Name (string) or Name (null) (Name)
Description (string) or Description (null) (Description)

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "member_count": 0,
  • "created_at": "string"
}

Delete Team

Delete a team.

Authorizations:
HTTPBearer
path Parameters
team_id
required
string <uuid> (Team Id)

Responses

Response samples

Content type
application/json
null

List Team Members

List members of a team.

Authorizations:
HTTPBearer
path Parameters
team_id
required
string <uuid> (Team Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add Team Member

Add a user to a team.

Authorizations:
HTTPBearer
path Parameters
team_id
required
string <uuid> (Team Id)
Request Body schema: application/json
required
user_id
required
string <uuid> (User Id)
role
string (Role)
Default: "member"

Responses

Request samples

Content type
application/json
{
  • "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
  • "role": "member"
}

Response samples

Content type
application/json
{
  • "user_id": "string",
  • "email": "string",
  • "role": "string",
  • "joined_at": "string"
}

Remove Team Member

Remove a user from a team.

Authorizations:
HTTPBearer
path Parameters
team_id
required
string <uuid> (Team Id)
user_id
required
string <uuid> (User Id)

Responses

Response samples

Content type
application/json
null

rbac

List Roles

List all roles with their permissions.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Role Permissions

Get permissions for a specific role.

Authorizations:
HTTPBearer
path Parameters
role_name
required
string (Role Name)

Responses

Response samples

Content type
application/json
[
  • "string"
]

List Users With Roles

List all users with their roles for the current tenant.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update User Role

Update a user's role.

Authorizations:
HTTPBearer
path Parameters
user_id
required
string (User Id)
Request Body schema: application/json
required
role
required
string (Role)

New role name or ID

Responses

Request samples

Content type
application/json
{
  • "role": "string"
}

Response samples

Content type
application/json
null

List Team Scopes

List team-scope assignments.

Authorizations:
HTTPBearer
query Parameters
Team Id (string) or Team Id (null) (Team Id)

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add Team Scope

Add a scope to a team.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
team_id
required
string (Team Id)
scope_id
required
string (Scope Id)

Responses

Request samples

Content type
application/json
{
  • "team_id": "string",
  • "scope_id": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "team_id": "string",
  • "team_name": "string",
  • "scope_id": "string",
  • "scope_name": "string",
  • "created_at": "string",
  • "created_by": "string"
}

Remove Team Scope

Remove a scope from a team.

Authorizations:
HTTPBearer
path Parameters
team_scope_id
required
string (Team Scope Id)

Responses

Response samples

Content type
application/json
null

List Maker Checker Audit

List maker-checker audit log entries.

Authorizations:
HTTPBearer
query Parameters
Entity Type (string) or Entity Type (null) (Entity Type)

Filter by entity type (change, rollback)

Action (string) or Action (null) (Action)

Filter by action (propose, approve, execute, reject)

limit
integer (Limit) <= 200
Default: 50
offset
integer (Offset)
Default: 0

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get Available Roles

Get list of available roles for assignment.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
[
  • { }
]

notifications

List Notifications

Get notifications for the current user.

Authorizations:
HTTPBearer
query Parameters
Event Types (string) or Event Types (null) (Event Types)

Comma-separated event types to filter

unread_only
boolean (Unread Only)
Default: false

Only return unread notifications

limit
integer (Limit) [ 1 .. 100 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
{
  • "notifications": [
    ],
  • "unread_count": 0,
  • "total": 0
}

List Notifications

Get notifications for the current user.

Authorizations:
HTTPBearer
query Parameters
Event Types (string) or Event Types (null) (Event Types)

Comma-separated event types to filter

unread_only
boolean (Unread Only)
Default: false

Only return unread notifications

limit
integer (Limit) [ 1 .. 100 ]
Default: 50
offset
integer (Offset) >= 0
Default: 0

Responses

Response samples

Content type
application/json
{
  • "notifications": [
    ],
  • "unread_count": 0,
  • "total": 0
}

Get Unread Count

Get count of unread notifications.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "count": 0
}

Get Unread Count

Get count of unread notifications.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "count": 0
}

Mark Notification Read

Mark a notification as read.

Authorizations:
HTTPBearer
path Parameters
notification_id
required
string <uuid> (Notification Id)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "notification_id": "string"
}

Mark Notification Read

Mark a notification as read.

Authorizations:
HTTPBearer
path Parameters
notification_id
required
string <uuid> (Notification Id)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "notification_id": "string"
}

Mark All Read

Mark all notifications as read.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "affected_count": 0
}

Mark All Read

Mark all notifications as read.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "affected_count": 0
}

Dismiss Notification

Dismiss (soft-delete) a notification.

Authorizations:
HTTPBearer
path Parameters
notification_id
required
string <uuid> (Notification Id)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "notification_id": "string"
}

Dismiss Notification

Dismiss (soft-delete) a notification.

Authorizations:
HTTPBearer
path Parameters
notification_id
required
string <uuid> (Notification Id)

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "notification_id": "string"
}

Clear All Notifications

Clear (dismiss) all notifications.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "affected_count": 0
}

Clear All Notifications

Clear (dismiss) all notifications.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "affected_count": 0
}

Get Preferences

Get notification preferences for the current user.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "user_id": "string",
  • "in_app_enabled": true,
  • "email_enabled": true,
  • "email_digest_frequency": "string",
  • "event_preferences": { },
  • "service_preferences": { },
  • "quiet_hours_enabled": false,
  • "quiet_hours_start": "string",
  • "quiet_hours_end": "string",
  • "quiet_hours_timezone": "UTC",
  • "min_severity": "info"
}

Get Preferences

Get notification preferences for the current user.

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "user_id": "string",
  • "in_app_enabled": true,
  • "email_enabled": true,
  • "email_digest_frequency": "string",
  • "event_preferences": { },
  • "service_preferences": { },
  • "quiet_hours_enabled": false,
  • "quiet_hours_start": "string",
  • "quiet_hours_end": "string",
  • "quiet_hours_timezone": "UTC",
  • "min_severity": "info"
}

Update Preferences

Update notification preferences for the current user.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
In App Enabled (boolean) or In App Enabled (null) (In App Enabled)
Email Enabled (boolean) or Email Enabled (null) (Email Enabled)
Email Digest Frequency (string) or Email Digest Frequency (null) (Email Digest Frequency)
Event Preferences (object) or Event Preferences (null) (Event Preferences)
Service Preferences (object) or Service Preferences (null) (Service Preferences)
Quiet Hours Enabled (boolean) or Quiet Hours Enabled (null) (Quiet Hours Enabled)
Quiet Hours Start (string) or Quiet Hours Start (null) (Quiet Hours Start)
Quiet Hours End (string) or Quiet Hours End (null) (Quiet Hours End)
Quiet Hours Timezone (string) or Quiet Hours Timezone (null) (Quiet Hours Timezone)
Min Severity (string) or Min Severity (null) (Min Severity)

Responses

Request samples

Content type
application/json
{
  • "in_app_enabled": true,
  • "email_enabled": true,
  • "email_digest_frequency": "string",
  • "event_preferences": { },
  • "service_preferences": { },
  • "quiet_hours_enabled": true,
  • "quiet_hours_start": "string",
  • "quiet_hours_end": "string",
  • "quiet_hours_timezone": "string",
  • "min_severity": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "user_id": "string",
  • "in_app_enabled": true,
  • "email_enabled": true,
  • "email_digest_frequency": "string",
  • "event_preferences": { },
  • "service_preferences": { },
  • "quiet_hours_enabled": false,
  • "quiet_hours_start": "string",
  • "quiet_hours_end": "string",
  • "quiet_hours_timezone": "UTC",
  • "min_severity": "info"
}

Update Preferences

Update notification preferences for the current user.

Authorizations:
HTTPBearer
Request Body schema: application/json
required
In App Enabled (boolean) or In App Enabled (null) (In App Enabled)
Email Enabled (boolean) or Email Enabled (null) (Email Enabled)
Email Digest Frequency (string) or Email Digest Frequency (null) (Email Digest Frequency)
Event Preferences (object) or Event Preferences (null) (Event Preferences)
Service Preferences (object) or Service Preferences (null) (Service Preferences)
Quiet Hours Enabled (boolean) or Quiet Hours Enabled (null) (Quiet Hours Enabled)
Quiet Hours Start (string) or Quiet Hours Start (null) (Quiet Hours Start)
Quiet Hours End (string) or Quiet Hours End (null) (Quiet Hours End)
Quiet Hours Timezone (string) or Quiet Hours Timezone (null) (Quiet Hours Timezone)
Min Severity (string) or Min Severity (null) (Min Severity)

Responses

Request samples

Content type
application/json
{
  • "in_app_enabled": true,
  • "email_enabled": true,
  • "email_digest_frequency": "string",
  • "event_preferences": { },
  • "service_preferences": { },
  • "quiet_hours_enabled": true,
  • "quiet_hours_start": "string",
  • "quiet_hours_end": "string",
  • "quiet_hours_timezone": "string",
  • "min_severity": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "tenant_id": "string",
  • "user_id": "string",
  • "in_app_enabled": true,
  • "email_enabled": true,
  • "email_digest_frequency": "string",
  • "event_preferences": { },
  • "service_preferences": { },
  • "quiet_hours_enabled": false,
  • "quiet_hours_start": "string",
  • "quiet_hours_end": "string",
  • "quiet_hours_timezone": "UTC",
  • "min_severity": "info"
}

findings

Submit Severity Feedback

Submit feedback about a finding's severity.

This feedback is used to:

  1. Identify findings that need reclassification
  2. Train ML models (Phase 3)
  3. Aggregate patterns across tenants

Permissions: Any authenticated user can submit feedback on findings they have access to (tenant-scoped).

Authorizations:
HTTPBearer
path Parameters
finding_id
required
string <uuid> (Finding Id)
Request Body schema: application/json
required
suggested_severity
required
string (Suggested Severity)
Enum: "critical" "high" "medium" "low"
reason
required
string (Reason)
Enum: "too_high" "too_low" "wrong_category" "context_missing" "other"

Why the current severity is incorrect

Comment (string) or Comment (null) (Comment)

Optional explanation

Responses

Request samples

Content type
application/json
{
  • "suggested_severity": "critical",
  • "reason": "too_high",
  • "comment": "string"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "finding_id": "string",
  • "suggested_severity": "string",
  • "created_by": "string",
  • "message": "Feedback submitted successfully. Thank you for helping improve severity classification!"
}

severity-feedback

Get Feedback Summary

Get overall feedback statistics.

Requires: Platform admin access

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
{
  • "total_feedback_count": 0,
  • "unique_findings_with_feedback": 0,
  • "disputed_finding_types": 0,
  • "avg_feedback_per_finding_type": 0,
  • "feedback_by_status": { },
  • "suggestions_by_severity": { }
}

Get Feedback By Type

Get aggregated feedback grouped by finding type.

Requires: Platform admin access

Authorizations:
HTTPBearer
query Parameters
disputed_only
boolean (Disputed Only)
Default: false

Only show disputed finding types

min_feedback_count
integer (Min Feedback Count)
Default: 1

Minimum feedback count to include

limit
integer (Limit) <= 100
Default: 50

Max results

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update Severity Metadata

Update finding type severity metadata based on reviewed feedback.

Requires: Platform admin access

Authorizations:
HTTPBearer
Request Body schema: application/json
required
service
required
string (Service)
kind
required
string (Kind)
new_severity
required
string (New Severity)
Enum: "critical" "high" "medium" "low"
reason
required
string (Reason) <= 500 characters

Why this change is being made

Responses

Request samples

Content type
application/json
{
  • "service": "string",
  • "kind": "string",
  • "new_severity": "critical",
  • "reason": "string"
}

Response samples

Content type
application/json
null

join-requests

List Join Requests

List all join requests for a tenant. Requires 'manage_users' permission (admin role).

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
query Parameters
Status Filter (string) or Status Filter (null) (Status Filter)

Responses

Response samples

Content type
application/json
null

Approve Join Request

Approve a join request - adds the user to the tenant with 'user' role.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
request_id
required
string <uuid> (Request Id)

Responses

Response samples

Content type
application/json
null

Reject Join Request

Reject a join request.

Authorizations:
HTTPBearer
path Parameters
tenant_id
required
string <uuid> (Tenant Id)
request_id
required
string <uuid> (Request Id)
Request Body schema: application/json
required
Reason (string) or Reason (null) (Reason)
Any of
string (Reason)

Responses

Request samples

Content type
application/json
{
  • "reason": "string"
}

Response samples

Content type
application/json
null

metrics

Get Cost Summary

Get cost summary by tier.

Returns LLM token usage, cache stats, and estimated COGS.

Access: Platform admin only

Authorizations:
HTTPBearer
query Parameters
Tier (string) or Tier (null) (Tier)

Filter by tier (free/team/pro/enterprise)

time_window
string (Time Window) ^(1h|24h|7d|30d)$
Default: "7d"

Responses

Response samples

Content type
application/json
null

Get Cache Performance

Get cache performance by service.

Returns hit rates, miss counts, and scan efficiency.

Access: Platform admin only

Authorizations:
HTTPBearer
query Parameters
Service (string) or Service (null) (Service)

Filter by service

Responses

Response samples

Content type
application/json
null

Get Quota Health

Get quota health across all tiers.

Returns usage, limits, and exceeded events.

Access: Platform admin only

Authorizations:
HTTPBearer

Responses

Response samples

Content type
application/json
null

public-config

Get Pricing

Get tier pricing configuration for signup page.

Returns all tier configurations from service_ops.yaml tier_config section. Used to render the pricing matrix during signup.

Response includes:

  • tiers: Dict mapping tier names to their full configuration
  • tier_order: List of tier keys in display order

Responses

Response samples

Content type
application/json
{ }

Get Services

Get all service metadata for landing page.

Returns the metadata section from service_ops.yaml.

Responses

Response samples

Content type
application/json
{ }

Get Llm Models

Get LLM model configuration.

Returns the phase-to-model mapping from service_ops.yaml llm_config section. Primarily for observability and debugging purposes.

Responses

Response samples

Content type
application/json
{ }

config

Get Pricing

Get tier pricing configuration for signup page.

Returns all tier configurations from service_ops.yaml tier_config section. Used to render the pricing matrix during signup.

Response includes:

  • tiers: Dict mapping tier names to their full configuration
  • tier_order: List of tier keys in display order

Responses

Response samples

Content type
application/json
{ }

Get Services

Get all service metadata for landing page.

Returns the metadata section from service_ops.yaml.

Responses

Response samples

Content type
application/json
{ }

Get Llm Models

Get LLM model configuration.

Returns the phase-to-model mapping from service_ops.yaml llm_config section. Primarily for observability and debugging purposes.

Responses

Response samples

Content type
application/json
{ }

Health Check

Root health check for Docker/LB compatibility.

Delegates to the detailed /system/health endpoint so callers always receive the same JSON shape (including legacy "checks" metadata).

Responses

Response samples

Content type
application/json
null

Metrics

Root Prometheus metrics endpoint (delegates to /system/metrics).

Responses

Root

Redirect to dashboard (legacy behavior)

Responses

Response samples

Content type
application/json
null

Api Info

API info endpoint

Responses

Response samples

Content type
application/json
null