alertmanager/api/v2/openapi.yaml
Kiril Vladimirov 2b6315f399 api/v2: Add Matcher.IsEqual to support all types
Signed-off-by: Kiril Vladimirov <kiril@vladimiroff.org>
2021-02-16 14:22:59 +02:00

524 lines
12 KiB
YAML

---
swagger: '2.0'
info:
version: 0.0.1
title: Alertmanager API
description: API of the Prometheus Alertmanager (https://github.com/prometheus/alertmanager)
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
consumes:
- "application/json"
produces:
- "application/json"
paths:
/status:
get:
tags:
- general
operationId: getStatus
description: Get current status of an Alertmanager instance and its cluster
responses:
'200':
description: Get status response
schema:
$ref: '#/definitions/alertmanagerStatus'
/receivers:
get:
tags:
- receiver
operationId: getReceivers
description: Get list of all receivers (name of notification integrations)
responses:
'200':
description: Get receivers response
schema:
type: array
items:
$ref: '#/definitions/receiver'
/silences:
get:
tags:
- silence
operationId: getSilences
description: Get a list of silences
responses:
'200':
description: Get silences response
schema:
$ref: '#/definitions/gettableSilences'
'500':
$ref: '#/responses/InternalServerError'
parameters:
- name: filter
in: query
description: A list of matchers to filter silences by
required: false
type: array
collectionFormat: multi
items:
type: string
post:
tags:
- silence
operationId: postSilences
description: Post a new silence or update an existing one
parameters:
- in: body
name: silence
description: The silence to create
required: true
schema:
$ref: '#/definitions/postableSilence'
responses:
'200':
description: Create / update silence response
schema:
type: object
properties:
silenceID:
type: string
'400':
$ref: '#/responses/BadRequest'
'404':
description: A silence with the specified ID was not found
schema:
type: string
/silence/{silenceID}:
parameters:
- in: path
name: silenceID
type: string
format: uuid
required: true
description: ID of the silence to get
get:
tags:
- silence
operationId: getSilence
description: Get a silence by its ID
responses:
'200':
description: Get silence response
schema:
$ref: '#/definitions/gettableSilence'
'404':
description: A silence with the specified ID was not found
'500':
$ref: '#/responses/InternalServerError'
delete:
tags:
- silence
operationId: deleteSilence
description: Delete a silence by its ID
parameters:
- in: path
name: silenceID
type: string
format: uuid
required: true
description: ID of the silence to get
responses:
'200':
description: Delete silence response
'500':
$ref: '#/responses/InternalServerError'
/alerts:
get:
tags:
- alert
operationId: getAlerts
description: Get a list of alerts
parameters:
- in: query
name: active
type: boolean
description: Show active alerts
default: true
- in: query
name: silenced
type: boolean
description: Show silenced alerts
default: true
- in: query
name: inhibited
type: boolean
description: Show inhibited alerts
default: true
- in: query
name: unprocessed
type: boolean
description: Show unprocessed alerts
default: true
- name: filter
in: query
description: A list of matchers to filter alerts by
required: false
type: array
collectionFormat: multi
items:
type: string
- name: receiver
in: query
description: A regex matching receivers to filter alerts by
required: false
type: string
responses:
'200':
description: Get alerts response
schema:
'$ref': '#/definitions/gettableAlerts'
'400':
$ref: '#/responses/BadRequest'
'500':
$ref: '#/responses/InternalServerError'
post:
tags:
- alert
operationId: postAlerts
description: Create new Alerts
parameters:
- in: body
name: alerts
description: The alerts to create
required: true
schema:
$ref: '#/definitions/postableAlerts'
responses:
'200':
description: Create alerts response
'500':
$ref: '#/responses/InternalServerError'
'400':
$ref: '#/responses/BadRequest'
/alerts/groups:
get:
tags:
- alertgroup
operationId: getAlertGroups
description: Get a list of alert groups
parameters:
- in: query
name: active
type: boolean
description: Show active alerts
default: true
- in: query
name: silenced
type: boolean
description: Show silenced alerts
default: true
- in: query
name: inhibited
type: boolean
description: Show inhibited alerts
default: true
- name: filter
in: query
description: A list of matchers to filter alerts by
required: false
type: array
collectionFormat: multi
items:
type: string
- name: receiver
in: query
description: A regex matching receivers to filter alerts by
required: false
type: string
responses:
'200':
description: Get alert groups response
schema:
'$ref': '#/definitions/alertGroups'
'400':
$ref: '#/responses/BadRequest'
'500':
$ref: '#/responses/InternalServerError'
responses:
BadRequest:
description: Bad request
schema:
type: string
InternalServerError:
description: Internal server error
schema:
type: string
definitions:
alertmanagerStatus:
type: object
properties:
cluster:
$ref: '#/definitions/clusterStatus'
versionInfo:
$ref: '#/definitions/versionInfo'
config:
$ref: '#/definitions/alertmanagerConfig'
uptime:
type: string
format: date-time
required:
- cluster
- versionInfo
- config
- uptime
clusterStatus:
type: object
properties:
name:
type: string
status:
type: string
enum: ["ready", "settling", "disabled"]
peers:
type: array
items:
$ref: '#/definitions/peerStatus'
required:
- status
alertmanagerConfig:
type: object
properties:
original:
type: string
required:
- original
versionInfo:
type: object
properties:
version:
type: string
revision:
type: string
branch:
type: string
buildUser:
type: string
buildDate:
type: string
goVersion:
type: string
required:
- version
- revision
- branch
- buildUser
- buildDate
- goVersion
peerStatus:
type: object
properties:
name:
type: string
address:
type: string
required:
- name
- address
silence:
type: object
properties:
matchers:
$ref: '#/definitions/matchers'
startsAt:
type: string
format: date-time
endsAt:
type: string
format: date-time
createdBy:
type: string
comment:
type: string
required:
- matchers
- startsAt
- endsAt
- createdBy
- comment
gettableSilence:
allOf:
- type: object
properties:
id:
type: string
status:
$ref: '#/definitions/silenceStatus'
updatedAt:
type: string
format: date-time
required:
- id
- status
- updatedAt
- $ref: '#/definitions/silence'
postableSilence:
allOf:
- type: object
properties:
id:
type: string
- $ref: '#/definitions/silence'
silenceStatus:
type: object
properties:
state:
type: string
enum: ["expired", "active", "pending"]
required:
- state
gettableSilences:
type: array
items:
$ref: '#/definitions/gettableSilence'
matchers:
type: array
items:
$ref: '#/definitions/matcher'
minItems: 1
matcher:
type: object
properties:
name:
type: string
value:
type: string
isRegex:
type: boolean
isEqual:
type: boolean
default: true
required:
- name
- value
- isRegex
alert:
type: object
properties:
labels:
$ref: '#/definitions/labelSet'
generatorURL:
type: string
format: uri
required:
- labels
gettableAlerts:
type: array
items:
$ref: '#/definitions/gettableAlert'
gettableAlert:
allOf:
- type: object
properties:
annotations:
$ref: '#/definitions/labelSet'
receivers:
type: array
items:
$ref: '#/definitions/receiver'
fingerprint:
type: string
startsAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
endsAt:
type: string
format: date-time
status:
$ref: '#/definitions/alertStatus'
required:
- receivers
- fingerprint
- startsAt
- updatedAt
- endsAt
- annotations
- status
- $ref: '#/definitions/alert'
postableAlerts:
type: array
items:
$ref: '#/definitions/postableAlert'
postableAlert:
allOf:
- type: object
properties:
startsAt:
type: string
format: date-time
endsAt:
type: string
format: date-time
annotations:
$ref: '#/definitions/labelSet'
- $ref: '#/definitions/alert'
alertGroups:
type: array
items:
$ref: '#/definitions/alertGroup'
alertGroup:
type: object
properties:
labels:
$ref: '#/definitions/labelSet'
receiver:
$ref: '#/definitions/receiver'
alerts:
type: array
items:
$ref: '#/definitions/gettableAlert'
required:
- labels
- receiver
- alerts
alertStatus:
type: object
properties:
state:
type: string
enum: ['unprocessed', 'active', 'suppressed']
silencedBy:
type: array
items:
type: string
inhibitedBy:
type: array
items:
type: string
required:
- state
- silencedBy
- inhibitedBy
receiver:
type: object
properties:
name:
type: string
required:
- name
labelSet:
type: object
additionalProperties:
type: string
tags:
- name: general
description: General Alertmanager operations
- name: receiver
description: Everything related to Alertmanager receivers
- name: silence
description: Everything related to Alertmanager silences
- name: alert
description: Everything related to Alertmanager alerts