Kentik Mitigations API (v6)

Start, stop, and manage DDoS and traffic mitigations (RTBH, Flowspec, adaptive, third-party).

OpenAPI Specification

kentik-mitigation-openapi.json Raw ↑
{
    "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