Eagle Eye Networks · Schema
AlertAction
CompanySecurityVideo SurveillanceVideo ManagementCloud VideoCameraPhysical SecurityVideo AnalyticsLicense Plate RecognitionStreamingWebhookAuthentication
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/eagle-eye-networks/main/json-schema/eagle-eye-networks-alert-action-schema.json",
"title": "AlertAction",
"x-generated": "2026-10-14",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/eagle-eye-networks-automations-openapi.yml#/components/schemas/AlertAction",
"oneOf": [
{
"$ref": "#/$defs/NotificationAction"
},
{
"$ref": "#/$defs/SmsAction"
},
{
"$ref": "#/$defs/SmtpAction"
},
{
"$ref": "#/$defs/ZulipPrivateAction"
},
{
"$ref": "#/$defs/ZulipStreamAction"
},
{
"$ref": "#/$defs/SlackAction"
},
{
"$ref": "#/$defs/WebhookAction"
},
{
"$ref": "#/$defs/BrivoAction"
},
{
"$ref": "#/$defs/ZendeskAction"
},
{
"$ref": "#/$defs/ImmixAction"
},
{
"$ref": "#/$defs/ZapierAction"
},
{
"$ref": "#/$defs/SentinelAction"
},
{
"$ref": "#/$defs/EvalinkTalosAction"
},
{
"$ref": "#/$defs/OutputPortAction"
},
{
"$ref": "#/$defs/EbusAction"
},
{
"$ref": "#/$defs/PlaySpeakerAudioClipAction"
}
],
"$defs": {
"AlertActionBase": {
"allOf": [
{
"type": "object",
"required": [
"type",
"settings",
"name",
"enabled"
],
"properties": {
"id": {
"description": "Unique identifier of the alert action.",
"type": "string",
"readOnly": true
},
"createTimestamp": {
"description": "Time at which the alert action was created.",
"type": "string",
"format": "date-time",
"readOnly": true
},
"type": {
"description": "Alert action type.",
"type": "string",
"enum": [
"notification",
"sms",
"smtp",
"zulipPrivate",
"zulipStream",
"slack",
"webhook",
"brivo",
"zendesk",
"immix",
"zapier",
"sentinel",
"evalinkTalos",
"outputPort",
"ebus",
"playSpeakerAudioClip"
]
}
}
},
{
"$ref": "#/$defs/AlertActionChangeable"
}
]
},
"AlertActionChangeable": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean",
"description": "Denotes if the alert rule action is enabled or not being applied.",
"default": true
},
"name": {
"type": "string",
"maxLength": 126
},
"notes": {
"type": "string",
"maxLength": 500
}
}
},
"BrivoAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"brivo"
]
},
"settings": {
"$ref": "#/$defs/BrivoActionSettings"
}
}
}
]
},
"BrivoActionSettings": {
"description": "Settings for using a Brivo access point by an alert action. Supports Acctivation, Setting an Override and removing an override\n",
"type": "object",
"required": [
"service",
"oauthId",
"accessPointName"
],
"properties": {
"service": {
"description": "Which service to use, has to be one of accessPoint, doorOverride, or doorOverrideCancel. There is accessPoint used to activate a brivo accesspoint. doorOverride is used to keep an access point activated either to a specified time or indefinite time. doorOverrideCancel removes the door override.\n",
"type": "string",
"enum": [
"accessPoint",
"doorOverride",
"doorOverrideCancel"
]
},
"oauthId": {
"description": "The oauth id is the value that should be used to retrieve the oauth information from the oauth mode. These values are like access_token.\n"
},
"accessPointName": {
"description": "The access point name.\n"
},
"accessPointId": {
"description": "The access point id. It is a unique Id generated by Brivo. When serializer is used the access_point_name will be used to get this value.\n"
},
"brivoOverrideSettings": {
"$ref": "#/$defs/BrivoOverRideSettings"
}
}
},
"BrivoOverRideSettings": {
"description": "Optional Field for adding an override values to the access point. Should only be used if adding an override value\n",
"type": "object",
"required": [
"endTimeMode",
"behavior"
],
"properties": {
"endTimeMode": {
"description": "When should over ride go to.\n UNTIL_TIME: Used to say when time ends. EndTime is required for this. Not providing this will raise an validation error.\n UNTIL_NEXT_SCHEDULE_CHANGE: Override will be placed until scheudle change is up\n INDEFINITE: Door override will be in place until forcibly removed.\n"
},
"behavior": {
"description": "With Override in place should access point be LOCKED or UNLOCK\n"
},
"endTime": {
"description": "The time format is iso-8601. This is used for when will the override be removed. This is not required if the endTimeMode is INDEFINITE\n"
}
}
},
"EbusAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"ebus"
]
},
"settings": {
"$ref": "#/$defs/EbusActionSettings"
}
}
}
]
},
"EbusActionSettings": {
"description": "Settings for sending an alert to EBUS.\n",
"type": "object",
"required": [
"email",
"url",
"port"
],
"properties": {
"email": {
"description": "Required\n",
"type": "string",
"format": "email"
},
"url": {
"description": "The ip address or domain name of the mail server are both acceptable.\n",
"type": "string"
},
"port": {
"type": "number",
"minimum": 1,
"maximum": 65535
},
"username": {
"description": "Check with ebus if this is required.\n",
"type": "string"
},
"password": {
"description": "Check with ebus if this is required.\n",
"type": "string"
}
}
},
"EvalinkTalosAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"evalinkTalos"
]
},
"settings": {
"$ref": "#/$defs/EvalinkTalosActionSettings"
}
}
}
]
},
"EvalinkTalosActionSettings": {
"description": "Settings for sending an alert via a Evalink Talos. Currently only POST is supported.\n",
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string"
},
"auth_token": {
"description": "Optional bearer token to be included in the Authorization header when sending the the alert to Evalink Talos.\n",
"type": "string"
}
}
},
"ImmixAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"immix"
]
},
"settings": {
"$ref": "#/$defs/ImmixActionSettings"
}
}
}
]
},
"ImmixActionSettings": {
"description": "Settings for sending an Immix alert.\n",
"required": [
"email",
"url",
"port"
],
"properties": {
"email": {
"description": "The email address where alert will be delivered.\n",
"type": "string",
"format": "email"
},
"url": {
"description": "Accepts either the IP address or domain name of the mail server.\n",
"type": "string"
},
"port": {
"description": "The port number used to connect to the mail server.\n",
"type": "number",
"minimum": 1,
"maximum": 65535
},
"username": {
"description": "Check with your monitoring service if this is required.\n",
"type": "string"
},
"password": {
"description": "Check with your monitoring service if this is required.\n",
"type": "string"
},
"tls": {
"description": "If TLS is not present in the settings, the default is false\n",
"type": "boolean"
}
}
},
"NotificationAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"notification"
]
},
"settings": {
"$ref": "#/$defs/NotificationActionSettings"
}
}
}
]
},
"NotificationActionSettings": {
"description": "Settings for sending notifications to a list of users. Each item in the list is the id of the user and if the user wants email, push, and/or webapp notifications sent.\n",
"type": "object",
"required": [
"users"
],
"properties": {
"users": {
"type": "array",
"description": "List of users to notify. Use `['*']` as the single item to target all users in the account.\n",
"minLength": 1,
"items": {
"type": "object",
"required": [
"id",
"push",
"email"
],
"properties": {
"id": {
"description": "Unique id of the user to notify. Use `'*'` to target all users in the account.",
"type": "string"
},
"push": {
"description": "If true, try to notify the user using mobile push notifications.",
"type": "boolean"
},
"email": {
"description": "If true, try to notify the user using email notifications.",
"type": "boolean"
},
"webapp": {
"description": "If true, try to notify the user using an in-webapp popup notification. Webapp is a first-class channel — a user may opt into webapp only (with `email` and `push` both `false`). Omitting this field is equivalent to `false`.\n",
"type": "boolean",
"default": false
}
}
}
},
"rearmSeconds": {
"description": "If rearmSeconds are set, any alert that occurs for the alertActionRule within the rearmSeconds period will not be sent via email, push, and/or webapp. Instead, it will appear in /api/v3.0/notifications with the `status` = `throttled`\n",
"type": "number",
"minimum": 1,
"maximum": 65535
},
"maxPerHour": {
"description": "If maxPerHour is set, for any alert that occurs for the alertActionRule over the maxPerHour in the last 60 minutes will not be sent via email, push, and/or webapp. Instead, it will appear in /api/v3.0/notifications with the `status` = `throttled`\n",
"type": "number",
"minimum": 1,
"maximum": 65535
}
}
},
"OutputPortAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"outputPort"
]
},
"settings": {
"$ref": "#/$defs/OutputPortActionSettings"
}
}
}
]
},
"OutputPortActionSettings": {
"description": "Settings for activating an output port alert action when an alert is triggered.\n",
"type": "object",
"required": [
"deviceId",
"portId",
"duration"
],
"properties": {
"deviceId": {
"description": "The device id of the device to which the output port belongs.\n",
"type": "string"
},
"duration": {
"description": "The duration in seconds for which the device output port should be activated.\n",
"type": "number",
"minimum": 1,
"maximum": 3600000
},
"portId": {
"description": "The device output port id to be activated.\n",
"type": "string"
}
}
},
"PlaySpeakerAudioClipAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"playSpeakerAudioClip"
]
},
"settings": {
"$ref": "#/$defs/PlaySpeakerAudioClipActionSettings"
}
}
}
]
},
"PlaySpeakerAudioClipActionSettings": {
"description": "Settings that determine where an audio clip is played when an alert is triggered.\n\nThe clip will be played on the union of:\n- A fixed list of explicitly defined devices (`devices__in`), and\n - Optionally, additional triggering devices as defined by `playOnTriggeringDevice`:\n - **none**: Do not include any triggering device.\n - **alertActorDevices**: Include the device for which the event was created and from which the alert was generated.\n - **conditionRuleDevices**: Include the devices that the rule, which created the alert, is filtering on.\n",
"type": "object",
"required": [
"speakerAudioClipId"
],
"properties": {
"speakerAudioClipId": {
"description": "The ID of speaker audio clip to play.\n",
"type": "string"
},
"playOnTriggeringDevice": {
"description": "Specifies which devices should play the audio clip when the rule is triggered.\n - `none`: Do not attempt to play audio clips on any devices.\n - `alertActorDevices`: The device for which the event was created and from which the alert was triggered.\n - `conditionRuleDevices`: The devices that the rule, which created the alert, is filtering on.\n",
"type": "string",
"enum": [
"none",
"alertActorDevices",
"conditionRuleDevices"
],
"default": "none"
},
"devices__in": {
"description": "A list of devices that will always play the audio clip, \nregardless of the device that triggered the alert. \nFormat: `\"<device_type>:<device_esn>\"` (e.g., `\"camera:10001abcd\"`, `\"speaker:1001abce\"`)\n",
"type": "array",
"items": {
"type": "string"
},
"default": []
}
}
},
"SentinelAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"sentinel"
]
},
"settings": {
"$ref": "#/$defs/SentinelActionSettings"
}
}
}
]
},
"SentinelActionSettings": {
"description": "Settings for sending an alert via a sentinel. Currently only POST is supported.\n",
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string"
},
"auth_token": {
"description": "Optional bearer token to be included in the Authorization header when sending the the alert to Sentinel.\n",
"type": "string"
}
}
},
"SlackAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"slack"
]
},
"settings": {
"$ref": "#/$defs/SlackActionSettings"
}
}
}
]
},
"SlackActionSettings": {
"description": "Settings for sending an alert message to Slack. Slack bot apps require the `chat:write` permissions scope. In addition, the bot app will need explicit permission to the channel selected in the settings via the Slack app.\n",
"type": "object",
"required": [
"apiToken",
"channel"
],
"properties": {
"apiToken": {
"description": "The Slack apiToken generated for your bot app.\n",
"type": "string"
},
"channel": {
"description": "The Slack channel for sending alert messages.\n",
"type": "string"
}
}
},
"SmsAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"sms"
]
},
"settings": {
"$ref": "#/$defs/SmsActionSettings"
}
}
}
]
},
"SmsActionSettings": {
"description": "Settings for sending SMS notifications to a list of users. Each item in the list is the id of the user to notify via SMS.\n",
"type": "object",
"required": [
"users"
],
"properties": {
"users": {
"type": "array",
"description": "List of users to notify via SMS. Use `['*']` as the single item to target all users in the account.\n",
"minLength": 1,
"items": {
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"description": "Unique id of the user to notify via SMS. Use `'*'` to target all users in the account.",
"type": "string"
}
}
}
}
}
},
"SmtpAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"smtp"
]
},
"settings": {
"$ref": "#/$defs/SmtpActionSettings"
}
}
}
]
},
"SmtpActionSettings": {
"description": "Settings for sending an alert via SMTP. This alert action is primarily used for monitoring services.\n",
"type": "object",
"required": [
"email",
"url",
"port"
],
"properties": {
"email": {
"description": "Required\n",
"type": "string",
"format": "email"
},
"url": {
"description": "The ip address or domain name of the mail server are both acceptable.\n",
"type": "string"
},
"port": {
"type": "number",
"minimum": 1,
"maximum": 65535
},
"username": {
"description": "Check with your monitoring service if this is required.\n",
"type": "string"
},
"password": {
"description": "Check with your monitoring service if this is required.\n",
"type": "string"
},
"tls": {
"description": "If tls is not present in the settings, the default is false\n",
"type": "boolean"
}
}
},
"WebhookAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"webhook"
]
},
"settings": {
"$ref": "#/$defs/WebhookActionSettings"
}
}
}
]
},
"WebhookActionSettings": {
"description": "Settings for sending an alert via a webhook. Currently only POST is supported.\n",
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string"
},
"auth_token": {
"description": "Optional bearer token to be included in the Authorization header when sending the alert to the webhook.\n",
"type": "string"
}
}
},
"ZapierAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"zapier"
]
},
"settings": {
"$ref": "#/$defs/ZapierActionSettings"
}
}
}
]
},
"ZapierActionSettings": {
"description": "Settings for sending an alert via Zapier. Currently only POST is supported.\n",
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"description": "The URL for the Zapier webhook to which alerts will be sent. This URL is provided by Zapier. For more information, refer to [Zapier Webhooks](https://help.zapier.com/hc/en-us/articles/8496083355661-How-to-Get-Started-with-Webhooks-by-Zapier#h_01HQ87H8BTMK49GY2RC8C4T59J) and [Trigger Zaps from Webhooks](https://help.zapier.com/hc/en-us/articles/8496288690317-Trigger-Zaps-from-webhooks#h_01HBGES5DW79VEMREX2Z7A0K48).\n",
"type": "string"
}
}
},
"ZendeskAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"zendesk"
]
},
"settings": {
"$ref": "#/$defs/ZendeskActionSettings"
}
}
}
]
},
"ZendeskActionSettings": {
"description": "Settings for sending an alert message to Zendesk and creating a ticket.\n",
"type": "object",
"required": [
"apiToken",
"email",
"subdomain"
],
"properties": {
"apiToken": {
"description": "The API token generated for your Zendesk account. For instructions on how to generate this token, please refer to [this guide](https://support.zendesk.com/hc/en-us/articles/4408889192858-Managing-access-to-the-Zendesk-API#topic_bsw_lfg_mmb).\n",
"type": "string"
},
"email": {
"description": "The email address associated with your Zendesk account. Please note that this email address does not need to be necessarily tied to a specific user and could belong to any admin or agent. Consider creating a dedicated user for automated interactions to streamline alert management.\n",
"type": "string"
},
"subdomain": {
"description": "The subdomain associated with your Zendesk account. This should follow the format https://subdomain.zendesk.com. Please provide only the subdomain and not the full URL. For more information on finding your Zendesk subdomain, please refer to [this guide](https://support.zendesk.com/hc/en-us/articles/4409381383578-Where-can-I-find-my-Zendesk-subdomain).\n",
"type": "string"
}
}
},
"ZulipActionSettings": {
"type": "object",
"required": [
"apiKey",
"email",
"organizationUrl"
],
"properties": {
"apiKey": {
"description": "The apiKey for your Zulip bot\n",
"type": "string"
},
"email": {
"description": "The email address for your Zulip bot\n",
"type": "string"
},
"organizationUrl": {
"description": "The url for your Zulip instance\n",
"type": "string"
}
}
},
"ZulipPrivateAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"zulipPrivate"
]
},
"settings": {
"$ref": "#/$defs/ZulipPrivateActionSettings"
}
}
}
]
},
"ZulipPrivateActionSettings": {
"allOf": [
{
"$ref": "#/$defs/ZulipActionSettings"
},
{
"description": "Settings for sending a private alert message to a user Zulip. Zulip bots need to be supported by your organization. Bots can be created under `Personal Settings > Bots`.\n",
"type": "object",
"required": [
"user"
],
"properties": {
"user": {
"description": "The user's Zulip email or user number.\n",
"type": "string"
}
}
}
]
},
"ZulipStreamAction": {
"allOf": [
{
"$ref": "#/$defs/AlertActionBase"
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"zulipStream"
]
},
"settings": {
"$ref": "#/$defs/ZulipStreamActionSettings"
}
}
}
]
},
"ZulipStreamActionSettings": {
"allOf": [
{
"$ref": "#/$defs/ZulipActionSettings"
},
{
"description": "Settings for sending an alert message to a stream in Zulip. Zulip bots need to be supported by your organization. Bots can be created under `Personal Settings > Bots`.\n",
"type": "object",
"required": [
"stream",
"topic"
],
"properties": {
"stream": {
"type": "string",
"description": "The name or id of a stream.\n"
},
"topic": {
"description": "The topic to post the message in.\n",
"type": "string"
}
}
}
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/eagle-eye-networks-alert-action"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.