Kentik Mitigations API (v6)
Start, stop, and manage DDoS and traffic mitigations (RTBH, Flowspec, adaptive, third-party).
Start, stop, and manage DDoS and traffic mitigations (RTBH, Flowspec, adaptive, third-party).
{
"openapi": "3.0.0",
"info": {
"title": "Mitigations API",
"description": "# Overview\nThe Alert Mitigations API provides programmatic access to Kentik's capabilities of configuring and managing network infrastructure mitigations that are triggered automatically based on alerts or manually to prevent network attacks.",
"version": "v202505",
"contact": {
"name": "Kentik API Engineering",
"url": "https://github.com/kentik/api-schema-public"
}
},
"tags": [
{
"name": "MitigationsService"
}
],
"paths": {
"/v202505/mitigations": {
"get": {
"summary": "List Mitigations",
"description": "Returns a list of mitigations.",
"operationId": "List",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceListResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "pagination.limit",
"description": "limit is how many items to return at most",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "uint64"
}
},
{
"name": "pagination.offset",
"description": "offset is the offset into the list of items",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "uint64"
}
},
{
"name": "pagination.includeTotalCount",
"description": "include_total_count is a flag to enforce API service to include the total count of items in the response,\nwhich in some cases may be very expensive to fetch",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
}
},
{
"name": "filters.createdAt.start",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "filters.createdAt.end",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "filters.mitigationIds",
"description": "The IDs of the mitigations to list.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "filters.alarmIds",
"description": "The alarm IDs the mitigations are associated with.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "filters.states",
"description": "The states of the mitigations to filter by.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"MITIGATION_STATE_UNSPECIFIED",
"MITIGATION_STATE_ACK_REQUIRED",
"MITIGATION_STATE_ARCHIVED",
"MITIGATION_STATE_CLEARING",
"MITIGATION_STATE_CLEARING_FAIL",
"MITIGATION_STATE_END_GRACE",
"MITIGATION_STATE_END_WAIT",
"MITIGATION_STATE_MANUAL_CLEAR",
"MITIGATION_STATE_MANUAL_CLEARING",
"MITIGATION_STATE_MANUAL_CLEARING_FAIL",
"MITIGATION_STATE_MANUAL_MITIGATING",
"MITIGATION_STATE_MANUAL_STARTING",
"MITIGATION_STATE_MANUAL_STARTING_FAIL",
"MITIGATION_STATE_MITIGATING",
"MITIGATION_STATE_STARTING",
"MITIGATION_STATE_STARTING_FAIL",
"MITIGATION_STATE_START_WAIT"
]
}
}
},
{
"name": "filters.platformIds",
"description": "The mitigation platform IDs the mitigations are associated with.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "filters.methodIds",
"description": "The mitigation method IDs the mitigations are associated with.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "filters.ipCidrs",
"description": "The IP/CIDR ranges the mitigations target.",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "filters.ipCidrPattern",
"description": "The IP/CIDR pattern to filter mitigations by.",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "filters.types",
"description": "The types of mitigations to filter by.\n\n - MITIGATION_TYPE_MANUAL: Manual mitigation\n - MITIGATION_TYPE_AUTO: Automatic mitigation",
"in": "query",
"required": false,
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"MITIGATION_TYPE_UNSPECIFIED",
"MITIGATION_TYPE_MANUAL",
"MITIGATION_TYPE_AUTO"
]
}
}
}
],
"tags": [
"MitigationsService"
]
},
"post": {
"summary": "Create Mitigation",
"description": "Creates a new manual mitigation.",
"operationId": "Create",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceCreateResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceCreateRequest"
}
}
},
"required": true
},
"tags": [
"MitigationsService"
]
}
},
"/v202505/mitigations/actions": {
"get": {
"summary": "Get Available Actions",
"description": "Returns available actions for mitigations.",
"operationId": "AvailableActions",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceAvailableActionsResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"tags": [
"MitigationsService"
]
}
},
"/v202505/mitigations/{action}": {
"post": {
"summary": "Act on Mitigation",
"description": "Performs an action on one or more mitigations.",
"operationId": "Act",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceActResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "action",
"description": "The action to perform on the mitigations.",
"in": "path",
"required": true,
"schema": {
"type": "string",
"enum": [
"MITIGATION_USER_ACTION_UNSPECIFIED",
"MITIGATION_USER_ACTION_TAKE_CONTROL",
"MITIGATION_USER_ACTION_STOP",
"MITIGATION_USER_ACTION_START",
"MITIGATION_USER_ACTION_DELETE",
"MITIGATION_USER_ACTION_APPROVE_START",
"MITIGATION_USER_ACTION_SKIP_WAIT",
"MITIGATION_USER_ACTION_RETRY",
"MITIGATION_USER_ACTION_ACK"
]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MitigationsServiceActBody"
}
}
},
"required": true
},
"tags": [
"MitigationsService"
]
},
"get": {
"summary": "Get Mitigation",
"description": "Returns a mitigation.",
"operationId": "Get",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceGetResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "action",
"description": "The ID of the mitigation to get.",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"tags": [
"MitigationsService"
]
}
},
"/v202505/mitigations/{id}/actions": {
"get": {
"summary": "Get Available Actions for Mitigation",
"description": "Returns available actions for a specific mitigation.",
"operationId": "AvailableActionsForMitigation",
"responses": {
"200": {
"description": "A successful response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/v202505MitigationsServiceAvailableActionsForMitigationResponse"
}
}
}
},
"default": {
"description": "An unexpected error response.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/rpcStatus"
}
}
}
}
},
"parameters": [
{
"name": "id",
"description": "The ID of the mitigation to get available actions for.",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "int64"
}
}
],
"tags": [
"MitigationsService"
]
}
}
},
"security": [
{
"email": [],
"token": []
}
],
"externalDocs": {
"description": "Kentik Alerts documentation",
"url": "https://kb.kentik.com/docs/alerting"
},
"components": {
"securitySchemes": {
"email": {
"type": "apiKey",
"name": "X-CH-Auth-Email",
"in": "header"
},
"token": {
"type": "apiKey",
"name": "X-CH-Auth-API-Token",
"in": "header"
}
},
"schemas": {
"MitigationsServiceActBody": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
},
"description": "The IDs of the mitigations to act on."
}
},
"required": [
"ids"
]
},
"MitigationsServiceAvailableActionsResponseMitigationAvailableTransitions": {
"type": "object",
"properties": {
"fromState": {
"$ref": "#/components/schemas/v202505MitigationState"
},
"availableActions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202505MitigationActionDetail"
},
"description": "The available actions from this state."
}
}
},
"protobufAny": {
"type": "object",
"properties": {
"@type": {
"type": "string"
}
},
"additionalProperties": {}
},
"rpcStatus": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string"
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/protobufAny"
}
}
}
},
"typesv202506PaginationConfig": {
"type": "object",
"properties": {
"limit": {
"type": "string",
"format": "uint64",
"title": "limit is how many items to return at most"
},
"offset": {
"type": "string",
"format": "uint64",
"title": "offset is the offset into the list of items"
},
"includeTotalCount": {
"type": "boolean",
"title": "include_total_count is a flag to enforce API service to include the total count of items in the response,\nwhich in some cases may be very expensive to fetch"
}
}
},
"typesv202506PaginationInfo": {
"type": "object",
"properties": {
"totalCount": {
"type": "string",
"format": "uint64",
"description": "total_count is the total number of items in the list.\nIt may be provided optionally if include_total_count is set to false.\nIt will be provided always if include_total_count is set to true."
},
"hasMoreResults": {
"type": "boolean",
"title": "has_more_results is a flag to indicate if there are more results to fetch\nIt may be provided instead of total_count if include_total_count is set to false and it would be very expensive to fetch the total count"
}
}
},
"v202303KeyValue": {
"type": "object",
"properties": {
"value": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
},
"v202303TimeRange": {
"type": "object",
"properties": {
"start": {
"type": "string",
"format": "date-time"
},
"end": {
"type": "string",
"format": "date-time"
}
}
},
"v202501BitwiseOp": {
"type": "string",
"enum": [
"BITWISE_OP_UNSPECIFIED",
"BITWISE_OP_ANY",
"BITWISE_OP_NONE",
"BITWISE_OP_ALL",
"BITWISE_OP_NOT_ALL"
],
"default": "BITWISE_OP_UNSPECIFIED",
"title": "- BITWISE_OP_ANY: (data & value) != 0\n - BITWISE_OP_NONE: (data & value) == 0\n - BITWISE_OP_ALL: (data & value) == value\n - BITWISE_OP_NOT_ALL: (data & value) != value"
},
"v202501FlowspecMatch": {
"type": "object",
"properties": {
"dstPrefix": {
"type": "string",
"title": "IPv4 or IPv6 CIDR prefix to match"
},
"srcPrefix": {
"type": "string",
"title": "IPv4 or IPv6 CIDR prefix to match"
},
"ipProtocol": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"dstPort": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"srcPort": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"icmpType": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"icmpCode": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"tcpFlags": {
"$ref": "#/components/schemas/v202501TCPFlagsFormula"
},
"packetLength": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"dscp": {
"$ref": "#/components/schemas/v202501NumericFormula"
},
"fragments": {
"$ref": "#/components/schemas/v202501FragmentFormula"
}
},
"description": "FlowspecMatch represents the traffic filtering criteria encoded\nas Flow Specification NLRI as per RFC 8955:\nhttps://datatracker.ietf.org/doc/html/rfc8955#name-dissemination-of-ipv4-flow-\nand other related documents."
},
"v202501Fragment": {
"type": "string",
"enum": [
"FRAGMENT_UNSPECIFIED",
"FRAGMENT_DF",
"FRAGMENT_ISF",
"FRAGMENT_FF",
"FRAGMENT_LF"
],
"default": "FRAGMENT_UNSPECIFIED",
"title": "- FRAGMENT_DF: Don't Fragment\n - FRAGMENT_ISF: Is a fragment other than the first\n - FRAGMENT_FF: First Fragment\n - FRAGMENT_LF: Last Fragment"
},
"v202501FragmentFormula": {
"type": "object",
"properties": {
"or": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501FragmentPredicateGroup"
}
}
}
},
"v202501FragmentPredicate": {
"type": "object",
"properties": {
"operator": {
"$ref": "#/components/schemas/v202501BitwiseOp"
},
"values": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501Fragment"
}
}
}
},
"v202501FragmentPredicateGroup": {
"type": "object",
"properties": {
"and": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501FragmentPredicate"
}
}
}
},
"v202501NumericFormula": {
"type": "object",
"properties": {
"or": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501NumericPredicateGroup"
}
}
}
},
"v202501NumericOp": {
"type": "string",
"enum": [
"NUMERIC_OP_UNSPECIFIED",
"NUMERIC_OP_EQUALS",
"NUMERIC_OP_NOT_EQUALS",
"NUMERIC_OP_LESS_THAN",
"NUMERIC_OP_GREATER_THAN",
"NUMERIC_OP_LESS_THAN_OR_EQUALS",
"NUMERIC_OP_GREATER_THAN_OR_EQUALS"
],
"default": "NUMERIC_OP_UNSPECIFIED"
},
"v202501NumericPredicate": {
"type": "object",
"properties": {
"operator": {
"$ref": "#/components/schemas/v202501NumericOp"
},
"value": {
"type": "string",
"format": "uint64"
}
}
},
"v202501NumericPredicateGroup": {
"type": "object",
"properties": {
"and": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501NumericPredicate"
}
}
}
},
"v202501TCPFlag": {
"type": "string",
"enum": [
"TCP_FLAG_UNSPECIFIED",
"TCP_FLAG_FIN",
"TCP_FLAG_SYN",
"TCP_FLAG_RST",
"TCP_FLAG_PSH",
"TCP_FLAG_ACK",
"TCP_FLAG_URG",
"TCP_FLAG_ECE",
"TCP_FLAG_CWR"
],
"default": "TCP_FLAG_UNSPECIFIED"
},
"v202501TCPFlagsFormula": {
"type": "object",
"properties": {
"or": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501TCPFlagsPredicateGroup"
}
}
}
},
"v202501TCPFlagsPredicate": {
"type": "object",
"properties": {
"operator": {
"$ref": "#/components/schemas/v202501BitwiseOp"
},
"values": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501TCPFlag"
}
}
}
},
"v202501TCPFlagsPredicateGroup": {
"type": "object",
"properties": {
"and": {
"type": "array",
"items": {
"$ref": "#/components/schemas/v202501TCPFlagsPredicate"
}
}
}
},
"v202505Mitigation": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the mitigation.",
"readOnly": true
},
"type": {
"$ref": "#/components/schemas/v202505MitigationType"
},
"alarmIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "The alarm IDs associated with this mitigation.",
"readOnly": true
},
"target": {
"$ref": "#/components/schemas/v202506MitigationTarget"
},
"currentState": {
"$ref": "#/components/schemas/v202505MitigationState"
},
"previousState": {
"$ref": "#/components/schemas/v202505MitigationState"
},
"platformId": {
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kentik/refs/heads/main/openapi/kentik-mitigation-openapi.json