Altimate AI ALERTS_V1 API
The ALERTS_V1 API from Altimate AI — 15 operation(s) for alerts_v1.
The ALERTS_V1 API from Altimate AI — 15 operation(s) for alerts_v1.
openapi: 3.1.0
info:
title: Fast ACCOUNT_COSTS ALERTS_V1 API
version: 0.1.0
tags:
- name: ALERTS_V1
paths:
/api/v1/alerts/rules:
get:
tags:
- ALERTS_V1
summary: List Rules
description: Paginated list of alert/report rules.
operationId: list_rules_api_v1_alerts_rules_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_type
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: '''alert'' or ''report'''
title: Rule Type
description: '''alert'' or ''report'''
- name: platform
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: '''snowflake'' or ''databricks'''
title: Platform
description: '''snowflake'' or ''databricks'''
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
- name: category
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Category
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Search
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number
default: 1
title: Page
description: Page number
- name: size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Page size
default: 50
title: Size
description: Page size
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/Page_RuleResponse_'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- ALERTS_V1
summary: Create
description: Create a new alert or report rule.
operationId: create_api_v1_alerts_rules_post
security:
- HTTPBearer: []
- HTTPBearer: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RuleCreateRequest'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RuleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/rules/summary:
get:
tags:
- ALERTS_V1
summary: Rules Summary
description: Summary counts for the rules list page.
operationId: rules_summary_api_v1_alerts_rules_summary_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RulesListResponse'
security:
- HTTPBearer: []
- HTTPBearer: []
/api/v1/alerts/rules/filters:
get:
tags:
- ALERTS_V1
summary: Rules Filters
description: Distinct filter values for the rules list page.
operationId: rules_filters_api_v1_alerts_rules_filters_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- HTTPBearer: []
- HTTPBearer: []
/api/v1/alerts/rules/{rule_id}:
get:
tags:
- ALERTS_V1
summary: Get
description: Get a single rule by ID.
operationId: get_api_v1_alerts_rules__rule_id__get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RuleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
post:
tags:
- ALERTS_V1
summary: Update
description: Update an existing rule.
operationId: update_api_v1_alerts_rules__rule_id__post
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RuleUpdateRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RuleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- ALERTS_V1
summary: Delete
description: Delete a rule and all its runs.
operationId: delete_api_v1_alerts_rules__rule_id__delete
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/rules/{rule_id}/clone:
post:
tags:
- ALERTS_V1
summary: Clone
description: Clone a rule. Only the owner can clone their own rules.
operationId: clone_api_v1_alerts_rules__rule_id__clone_post
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
responses:
'201':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RuleResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/rules/{rule_id}/runs:
get:
tags:
- ALERTS_V1
summary: Get Runs
description: Paginated execution history for a rule.
operationId: get_runs_api_v1_alerts_rules__rule_id__runs_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
title: Page
- name: size
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
default: 20
title: Size
- name: status
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Status
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RunsListResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/rules/{rule_id}/evaluate:
post:
tags:
- ALERTS_V1
summary: Evaluate
description: Evaluate a rule. dry_run=True for read-only, False to record the run.
operationId: evaluate_api_v1_alerts_rules__rule_id__evaluate_post
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluateRequest'
default:
dry_run: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RunResultResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/dry-run:
post:
tags:
- ALERTS_V1
summary: Dry Run
description: 'Evaluate a rule config on-the-fly without persisting anything.
Accepts the same JSON shape as RuleCreateRequest / the saved column,
so the payload can be copy-pasted directly.'
operationId: dry_run_api_v1_alerts_dry_run_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DryRunRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/RunResultResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
- HTTPBearer: []
/api/v1/alerts/preview:
post:
tags:
- ALERTS_V1
summary: Preview
description: Preview what a metric config would produce (chart + markdown).
operationId: preview_api_v1_alerts_preview_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PreviewRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
- HTTPBearer: []
/api/v1/alerts/notifications/test:
post:
tags:
- ALERTS_V1
summary: Test Notification
description: 'Send a test notification using a draft rule config.
Runs the same evaluator + chart pipeline as a real alert against real
ClickHouse data, then dispatches via the chosen notifier (email / slack /
webhook). Hard-fails on validation or chart-generation errors;
returns 200 with `{ok: false, error}` for delivery failures.
Rate limited to 10 requests/minute per tenant.'
operationId: test_notification_api_v1_alerts_notifications_test_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationTestRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/NotificationTestResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
- HTTPBearer: []
/api/v1/alerts/templates:
get:
tags:
- ALERTS_V1
summary: List Templates
description: Flat template library for the alert creation UI.
operationId: list_templates_api_v1_alerts_templates_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: platform
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter by platform: ''snowflake'' or ''databricks'''
title: Platform
description: 'Filter by platform: ''snowflake'' or ''databricks'''
- name: tag
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter templates by tag, e.g. 'popular'
title: Tag
description: Filter templates by tag, e.g. 'popular'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/templates/{template_id}:
get:
tags:
- ALERTS_V1
summary: Get Template
description: Get a single template by ID. Returns a RuleCreateRequest-ready payload.
operationId: get_template_api_v1_alerts_templates__template_id__get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: template_id
in: path
required: true
schema:
type: string
title: Template Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/metrics/catalog:
get:
tags:
- ALERTS_V1
summary: Metrics Catalog
description: Full metrics catalog for the alerts editor.
operationId: metrics_catalog_api_v1_alerts_metrics_catalog_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: category
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Filter by entity type / category
title: Category
description: Filter by entity type / category
- name: platform
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: 'Filter by platform: ''snowflake'' or ''databricks'''
title: Platform
description: 'Filter by platform: ''snowflake'' or ''databricks'''
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/metrics/filters/{filter_key}/options:
get:
tags:
- ALERTS_V1
summary: Get Filter Options
description: 'Load filter options dynamically for a given filter key.
For searchable filters (e.g. tags), supports ``search``, ``page``, and ``size``
query parameters for paginated search-as-you-type.'
operationId: get_filter_options_api_v1_alerts_metrics_filters__filter_key__options_get
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: filter_key
in: path
required: true
schema:
type: string
title: Filter Key
- name: metric_name
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Metric Name
- name: search
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Search pattern (tags filter)
title: Search
description: Search pattern (tags filter)
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number (tags filter)
default: 1
title: Page
description: Page number (tags filter)
- name: size
in: query
required: false
schema:
type: integer
maximum: 200
minimum: 1
description: Page size (tags filter)
default: 20
title: Size
description: Page size (tags filter)
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/alerts/admin/rules/{rule_id}/execute:
post:
tags:
- ALERTS_V1
summary: Admin Execute
description: 'Execute any alert/report rule on demand (admin only).
Restricted to the service user (email matching SERVICE_USER_EMAIL).
Bypasses schedule and active/inactive status checks.
Delegates to the Celery task for actual execution.
Requires a `reason` (logged for audit) and accepts an optional
`reference_time` to evaluate as if "now" were a different timestamp.'
operationId: admin_execute_api_v1_alerts_admin_rules__rule_id__execute_post
security:
- HTTPBearer: []
- HTTPBearer: []
parameters:
- name: rule_id
in: path
required: true
schema:
type: integer
title: Rule Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AdminExecuteRequest'
responses:
'202':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
components:
schemas:
RunResultResponse:
properties:
run_id:
anyOf:
- type: string
- type: 'null'
title: Run Id
rule_id:
anyOf:
- type: integer
- type: 'null'
title: Rule Id
metric_name:
type: string
title: Metric Name
current_value:
type: number
title: Current Value
previous_value:
anyOf:
- type: number
- type: 'null'
title: Previous Value
change:
anyOf:
- type: number
- type: 'null'
title: Change
change_percent:
anyOf:
- type: number
- type: 'null'
title: Change Percent
threshold_breached:
type: boolean
title: Threshold Breached
status:
type: string
title: Status
error:
anyOf:
- type: string
- type: 'null'
title: Error
executed_at:
type: string
format: date-time
title: Executed At
breaching_entities:
anyOf:
- items:
additionalProperties: true
type: object
type: array
- type: 'null'
title: Breaching Entities
description: 'For per-entity (''ANY'') rules: the warehouses that breached, each {entity, current_value, previous_value, change, change_percent}, worst first. Null for ordinary rules.'
request:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Request
description: Echo of the resolved request config (dry-run only)
queries:
items:
$ref: '#/components/schemas/QueryLogResponse'
type: array
title: Queries
description: SQL queries executed during evaluation
type: object
required:
- metric_name
- current_value
- threshold_breached
- status
- executed_at
title: RunResultResponse
DeliverySchedule:
properties:
cron:
type: string
title: Cron
description: Cron expression, e.g. '0 14 * * *'
default: 0 14 * * *
timezone:
type: string
title: Timezone
description: Timezone for the schedule
default: UTC
type: object
title: DeliverySchedule
description: When to run the alert/report.
RuleCreateRequest:
properties:
name:
anyOf:
- type: string
maxLength: 255
- type: 'null'
title: Name
description:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Description
rule_type:
anyOf:
- type: string
- type: 'null'
title: Rule Type
default: alert
platform:
anyOf:
- type: string
- type: 'null'
title: Platform
entity_type:
anyOf:
- type: string
- type: 'null'
title: Entity Type
metric_config:
anyOf:
- $ref: '#/components/schemas/MetricConfig'
- type: 'null'
delivery:
anyOf:
- $ref: '#/components/schemas/DeliveryConfig'
- type: 'null'
alert_message:
anyOf:
- type: string
- type: 'null'
title: Alert Message
type: object
title: RuleCreateRequest
description: 'Create request — field-level validation happens in validate_rule_create()
so we get contextual error codes instead of generic Pydantic 422s.'
QueryLogResponse:
properties:
label:
type: string
title: Label
sql:
type: string
title: Sql
params:
additionalProperties: true
type: object
title: Params
period_start:
anyOf:
- type: string
- type: 'null'
title: Period Start
period_end:
anyOf:
- type: string
- type: 'null'
title: Period End
value:
anyOf:
- type: number
- type: 'null'
title: Value
elapsed_ms:
anyOf:
- type: number
- type: 'null'
title: Elapsed Ms
type: object
required:
- label
- sql
title: QueryLogResponse
RunsListResponse:
properties:
items:
items:
$ref: '#/components/schemas/RunResponse'
type: array
title: Items
total:
type: integer
title: Total
page:
type: integer
title: Page
size:
type: integer
title: Size
type: object
required:
- items
- total
- page
- size
title: RunsListResponse
EvaluateRequest:
properties:
dry_run:
type: boolean
title: Dry Run
default: true
type: object
title: EvaluateRequest
PreviewRequest:
properties:
metric_config:
$ref: '#/components/schemas/MetricConfig'
rule_type:
anyOf:
- type: string
- type: 'null'
title: Rule Type
description: '''alert'' or ''report'' — reports may show resource-wise splits'
type: object
required:
- metric_config
title: PreviewRequest
NotifierConfig:
properties:
type:
type: string
title: Type
description: '''email'', ''slack'', or ''webhook'''
recipients:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Recipients
description: Email addresses; used when type is 'email'
channel:
anyOf:
- type: string
- type: 'null'
title: Channel
description: Slack notification ID; used when type is 'slack'
webhook_url:
anyOf:
- type: string
- type: 'null'
title: Webhook Url
description: HTTP(S) URL for POST delivery; used when type is 'webhook'
type: object
required:
- type
title: NotifierConfig
description: Single delivery destination (email, Slack, or webhook).
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
MetricFilter:
properties:
key:
type: string
title: Key
description: Filter dimension name, e.g. 'warehouse'
value:
items:
type: string
type: array
title: Value
description: Filter values, e.g. ['WH1', 'WH2'], ['all'], or ['ANY']
order:
type: integer
title: Order
description: Display order of this filter
default: 0
type: object
required:
- key
title: MetricFilter
description: A single dimension filter for a metric query.
RuleUpdateRequest:
properties:
name:
anyOf:
- type: string
maxLength: 255
minLength: 1
- type: 'null'
title: Name
description:
anyOf:
- type: string
maxLength: 2000
- type: 'null'
title: Description
rule_type:
anyOf:
- type: string
pattern: ^(alert|report)$
- type: 'null'
title: Rule Type
platform:
anyOf:
- type: string
pattern: ^(snowflake|databricks)$
- type: 'null'
title: Platform
entity_type:
anyOf:
- type: string
- type: 'null'
title: Entity Type
metric_config:
anyOf:
- $ref: '#/components/schemas/MetricConfig'
- type: 'null'
delivery:
anyOf:
- $ref: '#/components/schemas/DeliveryConfig'
- type: 'null'
alert_message:
anyOf:
- type: string
- type: 'null'
title: Alert Message
status:
anyOf:
- type: string
pattern: ^(active|inactive)$
- type: 'null'
title: Status
type: object
title: RuleUpdateRequest
RecentRunResponse:
properties:
id:
type: integer
title: Id
status:
type: string
title: Status
executed_at:
anyOf:
- type: string
format: date-time
- type: 'null'
title: Executed At
message:
anyOf:
- type: string
- type: 'null'
title: Message
type: object
required:
- id
- status
title: RecentRunResponse
description: Lightweight run summary for embedding in RuleResponse.recent_runs.
MetricParams:
properties:
comparison_type:
type: string
title: Comparison Type
description: '''absolute_value'' or ''relative_value'''
default: absolute_value
threshold_type:
type: string
title: Threshold Type
description: '''exceeds'', ''below'', ''changes_by'', or ''changes_by_percent'''
default: exceeds
threshold_value:
type: number
title: Threshold Value
description: Threshold to compare against
default: 0
aggregation:
type: string
title: Aggregation
description: '''sum'', ''mean'', ''max'', or ''min'''
default: sum
date_range:
type: string
title: Date Range
description: '''previous_day'', ''previous_week'', ''previous_month'', or ''previous_year'''
default: previous_day
is_percentage:
anyOf:
- type: boolean
- type: 'null'
title: Is Percentage
description: Derived from threshold_type; included by templates
type: object
title: MetricParams
description: Evaluation parameters within a metric config.
NotificationTestResponse:
properties:
ok:
type: boolean
title: Ok
target:
type: string
title: Target
description: Channel type — 'email', 'slack', or 'webhook'
chart_url:
anyOf:
- type: string
- type: 'null'
title: Chart Url
error:
anyOf:
- type: string
- type: 'null'
title: Error
type: object
required:
- ok
- target
title: NotificationTestResponse
description: Result of a test notification dispatch.
MetricConfig:
properties:
metric_name:
type: string
title: Metric Name
description: Metric identifier, e.g. 'warehouse_daily_cost'
params:
$ref: '#/components/schemas/MetricParams'
filters:
items:
$ref: '#/components/schemas/MetricFilter'
type: array
title: Filters
category:
anyOf:
- type: string
- type: 'null'
title: Category
description: Entity type echo; included by templates
type: object
required:
- metric_name
title: MetricConfig
description: Typed representation of the metric_config JSON stored in alert rules.
Page_RuleResponse_:
properties:
items:
items:
$ref: '#/components/schemas/RuleResponse'
type: array
title: Items
total:
anyOf:
- type: integer
minimum: 0.0
- type: 'null'
title: Total
page:
anyOf:
- type: integer
minimum: 1.0
- type: 'null'
title: Page
size:
anyOf:
- type: integer
minimum: 1.0
- type: 'null'
title: Size
pages:
anyOf:
- type: integer
minimum: 0.0
- type: 'null'
title: Pages
type: object
required:
- items
- total
- page
- size
title: Page[RuleResponse]
RunResponse:
properties:
id:
type: integer
title: Id
rule_id:
type: integer
title: Rule Id
status:
type: string
title: Status
result:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Result
error:
anyOf:
- additionalProperties: true
type: object
- type
# --- truncated at 32 KB (39 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/altimate-ai/refs/heads/main/openapi/altimate-ai-alerts-v1-api-openapi.yml