@openzeppelin/defender-serverless
Version:
Configure your Defender environment via code
2 lines (1 loc) • 12.1 kB
JSON
{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Definitions", "definitions": { "address": { "title": "Address", "type": "string", "pattern": "^0x[a-fA-F0-9]{40}$" }, "risk-category": { "title": "RiskCategory", "type": "string", "enum": ["NONE", "GOVERNANCE", "ACCESS-CONTROL", "SUSPICIOUS", "FINANCIAL", "TECHNICAL"] }, "network": { "title": "Network", "type": "string", "enum": ["mainnet", "sepolia", "rinkeby", "ropsten", "kovan", "goerli", "xdai", "sokol", "fuse", "bsc", "bsctest", "fantom", "fantomtest", "moonbase", "moonriver", "moonbeam", "matic", "mumbai", "avalanche", "fuji", "optimism", "optimism-kovan", "optimism-goerli", "arbitrum", "arbitrum-nova", "arbitrum-rinkeby", "arbitrum-goerli", "celo", "alfajores", "harmony-s0", "harmony-test-s0", "aurora", "auroratest", "hedera", "hederatest", "x-dfk-avax-chain", "x-dfk-avax-chain-test", "zksync", "zksync-goerli", "base", "base-goerli", "linea", "linea-goerli"] }, "policy": { "title": "Policy", "type": "object", "properties": { "gas-price-cap": { "type": "integer" }, "whitelist-receivers": { "title": "WhitelistReceivers", "type": "array", "items": { "type": "string" } }, "eip1559-pricing": { "type": "boolean" }, "private-transactions": { "type": "boolean" } } }, "relayer": { "title": "Relayer", "type": "object", "properties": { "name": { "type": "string" }, "network": { "$ref": "#/definitions/network", "format": "uri-reference" }, "min-balance": { "type": "integer" }, "address-from-relayer": { "title": "AddressFromRelayer", "type": "object" }, "policy": { "$ref": "#/definitions/policy", "format": "uri-reference" }, "api-keys": { "title": "RelayerAPIKeys", "type": "array", "items": { "type": "string" } } }, "required": ["name", "network", "min-balance"] }, "contract": { "title": "Contract", "type": "object", "properties": { "name": { "type": "string" }, "address": { "$ref": "#/definitions/address", "format": "uri-reference" }, "network": { "$ref": "#/definitions/network", "format": "uri-reference" }, "abi": { "$ref": "#/definitions/abi" }, "nat-spec": { "type": "string" } }, "required": ["name", "address", "network"] }, "notificationType": { "title": "NotificationType", "type": "string", "enum": ["slack", "email", "discord", "telegram", "datadog", "webhook", "opsgenie", "pager-duty"] }, "datadogConfig": { "title": "DatadogConfig", "type": "object", "properties": { "api-key": { "type": "string" }, "metric-prefix": { "type": "string", "maxLength": 100, "pattern": "^[A-Za-z]+[A-Za-z0-9_\\.]*\\.$" } }, "required": ["api-key", "metric-prefix"] }, "urlConfig": { "title": "UrlConfig", "type": "object", "properties": { "url": { "type": "string", "format": "uri" } }, "required": ["url"] }, "telegramBotConfig": { "title": "TelegramConfig", "type": "object", "properties": { "bot-token": { "type": "string" }, "chat-id": { "type": "string" } }, "required": ["bot-token", "chat-id"] }, "emailConfig": { "title": "EmailConfig", "type": "object", "properties": { "emails": { "title": "Emails", "type": "array", "items": { "type": "string", "format": "email" }, "default": [] } }, "required": ["emails"] }, "opsgenieUserType": { "title": "opsgenieUserType", "type": "string", "enum": ["team", "user", "escalation", "schedule"] }, "opsgeniePriorityLevel": { "title": "OpsgeniePriorityLevel", "type": "string", "enum": ["P1", "P2", "P3", "P4", "P5"] }, "opsgenieInstanceLocation": { "title": "OpsgenieInstanceLocation", "type": "string", "enum": ["US", "EU"] }, "opsgenieUser": { "type": "object", "properties": { "username": { "type": "string" }, "fullName": { "type": "string" }, "id": { "type": "string" }, "type": { "$ref": "#/definitions/opsgenieUserType" } }, "required": ["type", "username"], "additionalProperties": false }, "opsgenieConfig": { "title": "OpsgenieConfig", "properties": { "apiKey": { "type": "string" }, "instanceLocation": { "$ref": "#/definitions/opsgenieInstanceLocation" }, "alias": { "type": "string", "maxLength": 512 }, "responders": { "type": "array", "items": { "$ref": "#/definitions/opsgenieUser" } }, "visibleTo": { "type": "array", "items": { "$ref": "#/definitions/opsgenieUser" } }, "actions": { "type": "array", "maxItems": 10, "items": { "type": "string", "maxLength": 50 } }, "tags": { "type": "array", "maxItems": 10, "items": { "type": "string", "maxLength": 50 } }, "details": { "type": "object", "additionalProperties": { "type": "string" } }, "entity": { "type": "string", "maxLength": 512 }, "priority": { "$ref": "#/definitions/opsgeniePriorityLevel" }, "note": { "type": "string", "maxLength": 25000 } }, "required": ["apiKey", "instanceLocation"], "additionalProperties": false }, "pagerDutyEventType": { "title": "PagerDutyEventType", "type": "string", "enum": ["change", "alert"] }, "pagerDutyEventAction": { "title": "PagerDutyEventAction", "type": "string", "enum": ["trigger", "acknowledge", "resolve"] }, "pagerDutySeverity": { "title": "PagerDutySeverity", "type": "string", "enum": ["critical", "error", "warning", "info"] }, "pagerDutyConfig": { "title": "PagerDutyConfig", "properties": { "token": { "type": "string" }, "eventType": { "$ref": "#/definitions/pagerDutyEventType" }, "routingKey": { "type": "string", "maxLength": 32, "minLength": 32 }, "eventAction": { "$ref": "#/definitions/pagerDutyEventAction" }, "dedupKey": { "type": "string", "maxLength": 255 }, "severity": { "$ref": "#/definitions/pagerDutySeverity" }, "component": { "type": "string" }, "group": { "type": "string" }, "class": { "type": "string" }, "customDetails": { "type": "object", "additionalProperties": { "type": "string" } } }, "if": { "properties": { "eventType": { "const": "alert" } } }, "then": { "required": ["eventAction", "severity"] }, "required": ["token", "eventType", "routingKey"], "additionalProperties": false }, "notification": { "title": "Notification", "type": "object", "properties": { "type": { "$ref": "#/definitions/notificationType", "format": "uri-reference" }, "name": { "type": "string" }, "paused": { "type": "boolean" }, "config": { "title": "Config", "type": "object", "oneOf": [{ "$ref": "#/definitions/emailConfig", "format": "uri-reference" }, { "$ref": "#/definitions/telegramBotConfig", "format": "uri-reference" }, { "$ref": "#/definitions/datadogConfig", "format": "uri-reference" }, { "$ref": "#/definitions/urlConfig", "format": "uri-reference" }, { "$ref": "#/definitions/opsgenieConfig", "format": "uri-reference" }, { "$ref": "#/definitions/pagerDutyConfig", "format": "uri-reference" }] } }, "required": ["type", "name", "paused", "config"] }, "category": { "title": "Category", "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "notificationIds": { "type": "array", "items": { "$ref": "#/definitions/notification", "format": "uri-reference" } } }, "required": ["name"] }, "blockSentinel": { "title": "BlockSentinel", "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "enum": ["BLOCK"] }, "network": { "$ref": "#/definitions/network", "format": "uri-reference" }, "addresses": { "title": "Addresses", "type": "array", "items": { "$ref": "#/definitions/address", "format": "uri-reference" } }, "abi": { "$ref": "#/definitions/abi" }, "alert-threshold": { "title": "AlertThreshold", "type": "object", "properties": { "amount": { "type": "integer" }, "window-seconds": { "type": "integer" } } }, "paused": { "type": "boolean" }, "autotask-condition": { "$ref": "#/definitions/autotask", "format": "uri-reference" }, "autotask-trigger": { "$ref": "#/definitions/autotask", "format": "uri-reference" }, "confirm-level": { "oneOf": [{ "type": "string", "enum": ["safe", "finalized"] }, { "type": "integer" }] }, "notify-config": { "title": "NotifyConfig", "type": "object", "properties": { "timeout": { "type": "integer" }, "message": { "type": "string" }, "category": { "$ref": "#/definitions/category", "format": "uri-reference" }, "channels": { "title": "Channels", "type": "array", "items": { "$ref": "#/definitions/notification", "format": "uri-reference" } } }, "required": ["channels"] }, "conditions": { "title": "Conditions", "type": "object", "properties": { "event": { "title": "Event", "type": "array", "items": { "title": "EventItems", "type": "object", "properties": { "signature": { "type": "string" }, "expression": { "type": "string" } }, "required": ["signature"] } }, "function": { "title": "Function", "type": "array", "items": { "title": "FunctionItems", "type": "object", "properties": { "signature": { "type": "string" }, "expression": { "type": "string" } }, "required": ["signature"] } }, "transaction": { "type": "string" } } }, "risk-category": { "$ref": "#/definitions/risk-category" } }, "required": ["name", "type", "network", "addresses", "notify-config"] }, "fortaSentinel": { "title": "FortaSentinel", "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string", "enum": ["FORTA"] }, "network": { "$ref": "#/definitions/network", "format": "uri-reference" }, "addresses": { "title": "Addresses", "type": "array", "items": { "$ref": "#/definitions/address", "format": "uri-reference" } }, "abi": { "$ref": "#/definitions/abi" }, "alert-threshold": { "title": "AlertThreshold", "type": "object", "properties": { "amount": { "type": "integer" }, "window-seconds": { "type": "integer" } } }, "paused": { "type": "boolean" }, "autotask-condition": { "$ref": "#/definitions/autotask", "format": "uri-reference" }, "autotask-trigger": { "$ref": "#/definitions/autotask", "format": "uri-reference" }, "notify-config": { "title": "NotifyConfig", "type": "object", "properties": { "timeout": { "type": "integer" }, "message": { "type": "string" }, "category": { "$ref": "#/definitions/category", "format": "uri-reference" }, "channels": { "title": "Channels", "type": "array", "items": { "$ref": "#/definitions/notification", "format": "uri-reference" } } }, "required": ["channels"] }, "conditions": { "title": "Conditions", "type": "object", "properties": { "min-scanner-count": { "type": "integer" }, "severity": { "type": "integer", "enum": [0, 1, 2, 3, 4, 5] }, "alert-ids": { "title": "AlertIDs", "type": "array", "items": { "type": "string" } } }, "required": ["min-scanner-count"] }, "forta-node-id": { "type": "string" }, "agent-ids": { "title": "AgentIDs", "type": "array", "items": { "type": "string" } }, "risk-category": { "$ref": "#/definitions/risk-category" } }, "anyOf": [{ "required": ["agent-ids"] }, { "required": ["addresses"] }], "required": ["name", "type", "network", "notify-config"] }, "sentinel": { "title": "Sentinel", "type": "object", "oneOf": [{ "$ref": "#/definitions/blockSentinel", "format": "uri-reference" }, { "$ref": "#/definitions/fortaSentinel", "format": "uri-reference" }] }, "autotask": { "title": "Autotask", "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" }, "relayer": { "$ref": "#/definitions/relayer", "format": "uri-reference" }, "trigger": { "title": "Trigger", "type": "object", "properties": { "type": { "title": "TriggerType", "type": "string", "enum": ["schedule", "webhook", "sentinel", "monitor-filter"] }, "cron": { "title": "TriggerCron", "type": "string" }, "frequency": { "title": "TriggerFrequency", "type": "integer" } }, "if": { "properties": { "type": { "const": "schedule" } } }, "then": { "oneOf": [{ "required": ["cron"] }, { "required": ["frequency"] }] }, "else": {}, "required": ["type"] }, "paused": { "type": "boolean" } }, "required": ["name", "path", "trigger", "paused"] }, "deploymentConfig": { "title": "DeploymentConfig", "type": "object", "properties": { "relayer": { "$ref": "#/definitions/relayer", "format": "uri-reference" } }, "required": ["relayer"] }, "blockExplorerApiKey": { "title": "BlockExplorerApiKey", "type": "object", "properties": { "key": { "type": "string" }, "network": { "$ref": "#/definitions/network", "format": "uri-reference" } }, "required": ["key", "network"] }, "abi": { "title": "AbiType", "anyOf": [{ "title": "StringABI", "type": "string" }, { "title": "ArrayABI", "type": "array" }] } } }