pronghorn-core Schemas

On this page:

profiles-schema

{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "profiles-schema", "type": "object", "title": "The root schema", "description": "The root schema comprises the entire JSON document.", "properties": { "applicationProps": { "$ref": "#/definitions/applicationProps" }, "uiProps": { "$ref": "#/definitions/uiProps" }, "authenticationProps": { "$ref": "#/definitions/authenticationProps" }, "expressProps": { "$ref": "#/definitions/expressProps" }, "loggerProps": { "$ref": "#/definitions/loggerProps" }, "redisProps": { "$ref": "#/definitions/redisProps" }, "auditProps": { "$ref": "#/definitions/auditProps" }, "pathProps": { "$ref": "#/definitions/pathProps" }, "alarmProps": { "$ref": "#/definitions/alarmProps" }, "id": { "$ref": "#/definitions/id" }, "services": { "$ref": "#/definitions/services" }, "description": { "$ref": "#/definitions/description" }, "adapterStrategy": { "$ref": "#/definitions/adapterStrategy" }, "systemProps": { "$ref": "#/definitions/systemProps" }, "prebuiltProps": { "type": "object", "title": "Prebuilt Properties", "properties": { "repoConfigs": { "type": "object", "title": "Repository Configurations", "description": "The configurations used to fetch Prebuilts from different repositories.", "properties": { "@itentialopensource": { "type": "object", "properties": { "enabled": { "$ref": "common-schema#/definitions/enabled" }, "type": { "$ref": "common-schema#/definitions/type" }, "hostname": { "$ref": "common-schema#/definitions/hostname" }, "path": { "$ref": "common-schema#/definitions/path" }, "credentials": { "$ref": "common-schema#/definitions/credentials" } } } }, "additionalProperties": true } }, "required": [ "repoConfigs" ] }, "integrationProps": { "$ref": "#/definitions/integrationProps" }, "retryStrategy": { "$ref": "#/definitions/retryStrategy" } }, "required": [ "applicationProps", "uiProps", "authenticationProps", "expressProps", "loggerProps", "redisProps", "auditProps", "pathProps", "alarmProps", "id", "services", "description", "adapterStrategy", "systemProps", "prebuiltProps" ], "additionalProperties": true, "definitions": { "snmpConfig": { "type": "object", "title": "Remote SNMP Config", "description": "Remote SNMP destination config.", "properties": { "description": { "title": "Description", "default": "Alarm", "type": "string" }, "ip": { "type": "string", "format": "hostname", "description": "The IP address of the remote alarm receiver. FQDNs are also supported in this field.", "title": "Remote Server IP Address", "default": "127.0.0.1", "examples": [ "127.0.0.1" ] }, "community": { "type": "string", "description": "The SNMP community to apply to the outgoing trap or inform.", "title": "SNMP Community", "default": "public", "examples": [ "public" ] }, "properties": { "type": "object", "properties": { "retries": { "type": "integer", "description": "The number of timeout cycles to wait for an acknowledgement when delivering inform type notifications.", "title": "Retries", "default": 1, "examples": [ 1 ] }, "timeout": { "type": "integer", "description": "The number of seconds to wait for an acknowledgement when delivering inform type notifications.", "title": "Timeout", "default": 5000, "examples": [ 5000 ] }, "transport": { "type": "string", "description": "The protocol to use to send alarms to this receiver.", "title": "Transport Protocol", "default": "udp4", "examples": [ "udp4" ], "enum": [ "udp4", "udp6" ] }, "trapPort": { "type": "integer", "description": "The remote port of this alarm receiver.", "title": "SNMP Trap Port", "default": 162, "examples": [ 162 ] }, "version": { "type": "string", "description": "The SNMP version to use when delivering notifications to this alarm receiver.", "title": "SNMP Version", "default": "V1", "examples": [ "V1" ], "enum": [ "V1", "V2", "V2C", "v1", "v2", "v2c" ] } }, "required": [ "retries", "timeout", "trapPort", "version" ] }, "type": { "type": "string", "description": "The type can be configured as either a trap or inform.", "title": "SNMP Type", "default": "trap", "examples": [ "trap", "inform" ], "enum": [ "trap", "inform" ] } }, "required": [ "ip", "community", "properties", "type" ], "additionalProperties": false }, "log_level": { "type": "string", "title": "Log Level", "examples": [ "error", "warn", "info", "debug", "trace", "spam" ], "enum": [ "error", "warn", "info", "debug", "trace", "spam" ] }, "sys_log_level": { "type": "string", "title": "Sys Log Level", "default": "warning", "examples": [ "debug", "info", "warning", "error" ], "enum": [ "debug", "info", "warning", "error" ] }, "port": { "type": "integer", "title": "Port", "minimum": 1, "maximum": 65535 }, "applicationProps": { "type": "object", "title": "Application Properties", "properties": { "description": { "title": "Description", "default": "Application", "type": "string" }, "directory": { "default": "/opt/pronghorn/current/node_modules", "title": "Directory", "description": "The location of the node_modules directory.", "type": "string", "format": "uri-reference" } }, "required": [ "directory" ] }, "uiProps": { "type": "object", "title": "UI Properties", "properties": { "description": { "type": "string", "title": "Description", "default": "UI", "examples": [ "UI" ] }, "layout": { "type": "string", "title": "Layout", "examples": [ "node_modules/@itential/pronghorn-core/ui/views/layout.jade" ] }, "home": { "type": "string", "title": "Home", "examples": [ "node_modules/@itential/pronghorn-core/ui/views/home.jade" ] }, "login": { "type": "string", "title": "Login", "examples": [ "node_modules/@itential/pronghorn-core/ui/views/login.jade" ] }, "profile": { "type": "string", "title": "Profile", "examples": [ "node_modules/@itential/pronghorn-core/ui/views/profile.jade" ] }, "fav_icon": { "type": "string", "title": "Favicon", "examples": [ "node_modules/@itential/pronghorn-core/ui/img/favicon.ico" ] } }, "required": [ "layout", "home", "login", "profile", "fav_icon" ] }, "authenticationProps": { "type": "object", "title": "Authentication Properties", "properties": { "description": { "type": "string", "title": "Description", "examples": [ "Authentication" ] }, "logoutTime": { "type": "integer", "minimum": 2, "description": "The maximum number of time IAP has to make an api call before the user is logged out, in minutes.", "title": "Logout Time", "default": 60, "examples": [ 20 ] }, "uniqueSession": { "type": "boolean", "description": "When uniqueSession is set to true, only one session may be enabled for a given user.", "title": "Unique Session", "default": false, "examples": [ false ] }, "admins": { "type": "array", "title": "Admins", "description": "Members of these groups will be implicitly assigned with admin permissions", "items": { "type": "object", "properties": { "provenance": { "type": "string", "description": "The name of the AAA adapter in which the groups reside.", "title": "Provenance", "default": "", "examples": [ "Local AAA" ] }, "group": { "type": "string", "description": "The name of a user group which will have Pronghorn user management capabilities.", "title": "Group", "default": "", "examples": [ "admin" ] } }, "required": [ "provenance", "group" ] } }, "cookieName": { "type": "string", "description": "The name used by Pronghorn to identify cookies for user session data", "title": "Cookie Name", "default": "token", "examples": [ "pronghorn_token" ] }, "brokerPrincipal": { "type": "boolean", "description": "When brokerPrincipal is set to true, the AAA adapter will be responsible for creating a principal.", "title": "Broker Principal", "default": false, "examples": [ false ] }, "sso": { "type": "object", "description": "The configuration settings for single sign on", "title": "SSO Config", "properties": { "enabled": { "type": "boolean", "description": "A boolean flag indicating if single sign on is active", "title": "Enable SSO", "default": false }, "config": { "type": "string", "description": "Name of the SSO configuration to be used", "title": "Config", "default": "", "examples": [ "okta", "azure" ] } }, "required": [ "enabled", "config" ] } }, "required": [ "uniqueSession", "admins", "sso" ] }, "expressProps": { "type": "object", "title": "Express Properties", "properties": { "description": { "type": "string", "title": "Description", "default": "Express Server", "examples": [ "Express Server" ] }, "cacheControl": { "type": "boolean", "description": "A boolean flag indicating whether Pronghorn will send the Cache-Control header. This can be useful in environments that leverage caching proxy servers.", "title": "Cache Control", "default": false, "examples": [ false ] }, "timeout": { "type": "integer", "description": "The maximum number of milliseconds Pronghorn has to respond to a request before a timeout will be returned to the client.", "title": "Timeout", "default": 300000, "examples": [ 300000 ] }, "access_control_allow_origin": { "type": "string", "description": "The configured domain name for the Access-Control-Allow-Origin header used for security.", "title": "Access-Control-Allow-Origin", "default": "*", "examples": [ "*" ] }, "express_http": { "type": "object", "title": "Express HTTP Settings", "properties": { "enable": { "type": "boolean", "description": "A boolean flag indicating whether Pronghorn will listen for incoming HTTP requests.", "title": "Enable HTTP", "default": false, "examples": [ false ] }, "port": { "$ref": "#/definitions/port" } }, "required": [ "enable", "port" ] }, "express_https": { "type": "object", "title": "Express HTTPS Settings", "properties": { "enable": { "type": "boolean", "description": "A boolean flag indicating whether Pronghorn will listen for incoming HTTPS requests.", "title": "Enable HTTPS", "default": false, "examples": [ true ] }, "port": { "$ref": "#/definitions/port" }, "key": { "type": "string", "description": "The server's private key to use for all https transactions. If the private key is encrypted with a passphrase, you should also include the express_https.passphrase property.", "title": "Key", "default": "/opt/pronghorn/current/keys/key.pem", "examples": [ "/opt/pronghorn/current/keys/key.pem" ] }, "passphrase": { "type": "string", "title": "Passphrase", "description": "The passphrase for the server's private key. You should only include this property if the private key is encrypted with a passphrase." }, "cert": { "type": "string", "title": "Certificate", "description": "The server's public certificate to use for all HTTPS transactions.", "default": "/opt/pronghorn/current/keys/cert.pem", "examples": [ "/opt/pronghorn/current/keys/cert.pem" ] }, "secureProtocol": { "type": "string", "description": "The secureProtocol can be used to configure the set of allowed SSL/TLS protocol versions.", "title": "Secure Protocol", "default": "TLSv1_2_method", "examples": [ "TLSv1_2_method" ], "enum": [ "TLSv1_method", "TLSv1_1_method", "TLSv1_2_method" ] }, "ciphers": { "type": "string", "description": "The set of ciphers to allow when establishing an encrypted session.", "title": "Ciphers", "default": "", "examples": [ "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256" ] }, "client_reneg_limit": { "type": "integer", "description": "The maximum number of client renegotiations allowed per renegotiation window.", "title": "Client Renegotiation Limit", "default": 1, "examples": [ 1 ] }, "client_reneg_window": { "type": "integer", "description": "The renegotiation window allows a limited number of client renegotiation requests within a configured number of seconds.", "title": "Client Renegotiation Window", "default": 600, "examples": [ 600 ] } }, "required": [ "enable", "port", "key", "cert", "secureProtocol", "client_reneg_limit", "client_reneg_window" ] }, "allowedHttpOptionalVerbs": { "title": "Allowed HTTP Optional Verbs", "description": "An array of optional HTTP verbs that are allowed to be used in requests to IAP", "default": [], "type": "array", "uniqueItems": true, "items": { "enum": [ "ACL", "BIND", "CHECKOUT", "CONNECT", "COPY", "LINK", "LOCK", "MERGE", "MKACTIVITY", "MKCALENDAR", "MKCOL", "MOVE", "M-SEARCH", "NOTIFY", "PROPFIND", "PROPPATCH", "PURGE", "REBIND", "REPORT", "SEARCH", "SUBSCRIBE", "TRACE", "UNBIND", "UNLINK", "UNLOCK", "UNSUBSCRIBE" ] } } }, "required": [ "express_http", "express_https" ] }, "loggerProps": { "type": "object", "title": "Logger Properties", "properties": { "description": { "type": "string", "title": "Description", "default": "Logger Settings", "examples": [ "Logging" ] }, "log_directory": { "type": "string", "title": "Directory", "description": "The directory to store Pronghorn log files.", "default": "/var/log/pronghorn", "examples": [ "/var/log/pronghorn" ] }, "log_filename": { "type": "string", "description": "The name of the current Pronghorn log file.", "title": "Filename", "default": "pronghorn.log", "examples": [ "pronghorn.log" ] }, "log_max_file_size": { "type": "integer", "title": "Max File Size", "description": "The maximum size of each Pronghorn log file in bytes.", "default": 1048576, "examples": [ 1048576 ] }, "log_max_files": { "type": "integer", "description": "The maximum number of log files maintained on the server.", "title": "Max Number of Files", "default": 100, "examples": [ 100 ] }, "log_level": { "title": "Log Level", "$ref": "#/definitions/log_level" }, "console_level": { "title": "Console Level", "$ref": "#/definitions/log_level" }, "webserver": { "type": "object", "description": "Determines how to set up the web server access log.", "title": "Webserver", "properties": { "log_directory": { "type": "string", "title": "Directory", "description": "The directory to store web server access log files.", "default": "/var/log/pronghorn", "examples": [ "/var/log/pronghorn" ] }, "log_filename": { "type": "string", "description": "The name for the web server access log file.", "title": "Filename", "default": "webserver.log", "examples": [ "webserver.log" ] } } }, "syslog": { "type": "object", "description": "Allows Pronghorn to send log messages to a local or remote syslog daemon.", "title": "Syslog", "properties": { "level": { "$ref": "#/definitions/sys_log_level" }, "host": { "type": "string", "description": "The host running syslogd.", "title": "Host", "default": "localhost", "examples": [ "localhost" ] }, "port": { "type": "integer", "description": "The port on the host that syslog is running on.", "title": "Port", "default": 514, "minimum": 1, "maximum": 65535, "examples": [ 514 ] }, "protocol": { "type": "string", "title": "Protocol", "description": "The network protocol to log over. Can be one of tcp4, udp4, unix or unix-connect.", "default": "udp4", "examples": [ "udp4" ], "enum": [ "tcp4", "udp4", "unix", "unix-connect" ] }, "facility": { "type": "string", "description": "The syslog facility to use.", "title": "Facility", "default": "local0", "examples": [ "local0" ] }, "type": { "type": "string", "title": "Type", "description": "The type of syslog protocol to use. Possible values are BSD and 5424.", "default": "BSD", "examples": [ "5424" ], "enum": [ "BSD", "5424" ] }, "path": { "type": "string", "title": "Path", "description": "The path to the syslog dgram socket (i.e. /dev/log or /var/run/syslog for OS X). If path is used, host, port and protocol do not need to be configured.", "default": "", "format": "uri-reference", "examples": [ "/dev/log" ] }, "pid": { "type": "string", "description": "Process identifier (PID) of the process that log messages are coming from (Default is process.pid).", "title": "Process ID", "default": "process.pid", "examples": [ "process.pid" ] }, "localhost": { "type": "string", "description": "The host to indicate that log messages are coming from.", "title": "Log Host", "default": "", "examples": [ "localhost" ] }, "app_name": { "type": "string", "description": "The name of the application.", "title": "Application Name", "default": "", "examples": [ "process.title" ] }, "eol": { "type": "string", "title": "End of Line Character", "description": "The end of line character to be added to the end of the message.", "default": "", "examples": [ "CR" ] } }, "allOf": [ { "required": [ "level", "facility", "type" ] }, { "anyOf": [ { "required": [ "host", "port", "protocol" ] }, { "required": [ "path" ] } ] } ], "additionalProperties": false } }, "required": [ "log_directory", "log_filename", "log_max_file_size", "log_max_files", "log_level", "console_level" ], "additionalProperties": false }, "redisProps": { "type": "object", "title": "Redis Properties", "properties": { "db": { "type": "integer", "description": "The Redis database number to connect to (may be any of 0-15).", "title": "Database Number", "examples": [ 0 ], "minimum": 0 }, "username": { "type": "string", "title": "Username", "description": "The username with access to the Redis DB.", "examples": [ "admin" ] }, "password": { "type": "string", "title": "Password", "description": "The passphrase protecting access to the Redis DB.", "examples": [ "$ENC87eb897b507afc1796db49409dd1251c87872e85afd2469e" ] }, "maxRetriesPerRequest": { "type": "integer", "description": "IAP will be shutdown after maxRetriesPerRequest is reached in case of lost Redis network connection.", "title": "Max Retries Per Request", "default": 20, "examples": [ 20 ] }, "maxHeartbeatWriteRetries": { "type": "integer", "description": "IAP will be shutdown after maxHeartbeatWriteRetries is reached in case of lost ability to write data in Redis.", "title": "Max Heartbeat Write Retries", "default": 20, "examples": [ 20 ] } }, "oneOf": [ { "properties": { "host": { "type": "string", "description": "The IP or hostname of the server running the Redis service.", "title": "Host", "examples": [ "127.0.0.1", "localhost", "::1" ] }, "port": { "type": "integer", "title": "Port", "examples": [ 6379 ] } }, "required": [ "host", "port" ] }, { "properties": { "sentinels": { "type": "array", "title": "Sentinels", "items": { "type": "object", "properties": { "host": { "type": "string", "title": "Host", "examples": [ "localhost" ] }, "port": { "type": "integer", "title": "Port", "examples": [ 26379 ] } } }, "description": "The list of Redis hosts for sentinel configuration." }, "name": { "type": "string", "title": "Name", "description": "The name of the master node in the Redis sentinel group." } }, "required": [ "sentinels", "name" ] } ] }, "auditProps": { "type": "object", "title": "Audit Properties", "properties": { "description": { "type": "string", "title": "Description", "examples": [ "Audit" ] }, "audit": { "type": "boolean", "title": "Audit", "examples": [ true ] }, "brokerValidation": { "type": "boolean", "title": "Broker Validation", "examples": [ true ] } }, "required": [ "audit", "brokerValidation" ] }, "pathProps": { "type": "object", "title": "Path Properties", "properties": { "description": { "title": "Description", "default": "Path Properties", "type": "string" }, "encrypted": { "type": "boolean", "description": "A boolean flag indicating Pronghorn core is encrypted.", "title": "Encrypted", "default": true, "examples": [ true ] } }, "required": [ "encrypted" ] }, "alarmProps": { "title": "Alarm Properties", "type": "array", "items": { "$ref": "#/definitions/snmpConfig" }, "minItems": 0 }, "id": { "type": "string", "title": "Profile ID", "pattern": "^[^\\/]+$", "examples": [ "profile1" ] }, "services": { "type": "array", "title": "Services", "items": { "type": "string", "examples": [ "WorkflowBuilder", "FormBuilder" ] } }, "description": { "type": "string", "title": "Description", "examples": [ "An IAP Profile" ] }, "adapterStrategy": { "type": "object", "title": "Adapter Strategy", "properties": { "device": { "title": "Device Calls", "description": "Defines the order in which southbound systems are called.", "properties": { "adapterTypes": { "type": "array", "uniqueItems": true, "title": "Adapter Types", "default": [], "description": "A list of adapter types that manages the devices.", "items": { "type": "string", "enum": [ "NSO", "AutomationGateway" ] } }, "exceptions": { "type": "object", "minProperties": 1, "maxProperties": 1, "title": "Exceptions", "default": { "runCommand": "" }, "description": "An override for the runCommand's preference to a southbound system.", "properties": { "runCommand": { "type": "string", "title": "Run Command", "default": "", "description": "Runs a command on a device.", "oneOf": [ { "const": "", "title": "None" }, { "const": "NSO", "title": "NSO" }, { "const": "AutomationGateway", "title": "Automation Gateway" } ] } }, "required": [ "runCommand" ] } }, "required": [ "adapterTypes" ], "type": "object" } }, "required": [ "device" ], "additionalProperties": true }, "systemProps": { "type": "object", "title": "System Properties", "description": "Properties used to configure IAP process.", "properties": { "shutdownTimeout": { "type": "integer", "title": "Shutdown Timeout", "minimum": 0, "description": "The amount of time a service should wait before shutting down, in seconds.", "examples": [ 3 ] }, "servicesBlacklist": { "type": "array", "title": "Services Blacklist", "description": "An array of services that blocks CRUD operation access for each service listed.", "items": { "type": "string", "description": "The service type that will be denied CRUD operation access.", "examples": [ "Local AAA" ] } }, "launchDelay": { "type": "integer", "title": "Launch Delay", "minimum": 0, "maximum": 60, "description": "The application/adapter launch delay, in seconds.", "examples": [ 5 ] }, "launchTimeout": { "type": "integer", "title": "Launch Timeout", "minimum": 30, "maximum": 1200, "description": "The application/adapter launch timeout, in seconds.", "examples": [ 60 ] }, "serviceHealthCheckInterval": { "type": "integer", "title": "Service Health Check Interval", "default": 5, "minimum": 1, "description": "How often to update service health, measured in seconds." }, "serviceHealthCheckUnhealthyThreshold": { "type": "integer", "title": "Service Health Check Unhealthy Threshold", "default": 3, "minimum": 1, "description": "Health data staleness threshhold, measured in number of missed health checks. Services which fail to report health data will be assumed to be offline." }, "deadProcessCheck": { "type": "boolean", "title": "Dead Process Check", "default": false, "description": "Enable/disable IAP check for dead applications/adapters.", "examples": [ false, true ] }, "deadProcessCheckInterval": { "type": "integer", "title": "Dead Process Check Interval", "default": 5, "minimum": 5, "maximum": 600, "description": "How often to check if application/adapter stopped sending healthcheck pings, in seconds.", "examples": [ 5 ] }, "deadProcessMaxPeriod": { "type": "integer", "title": "Dead Process Max Period", "default": 15, "minimum": 15, "maximum": 600, "description": "Maximum time period for application/adapter without sending healthcheck ping, in seconds.", "examples": [ 15 ] }, "externalRequestTimeout": { "type": "integer", "title": "External Request Timeout", "minimum": 1, "maximum": 120, "default": 5, "description": "The timeout for external API requests, in seconds.", "examples": [ 5, 10 ] }, "deviceCountPollingInterval": { "type": "integer", "title": "Device Count Polling Interval", "minimum": 1, "maximum": 168, "default": 24, "description": "The interval for how often IAP polls for the number of devices, in hours.", "examples": [ 24 ] } }, "required": [] }, "integrationProps": { "type": "object", "title": "Integration Properties", "properties": { "threadCount": { "type": "integer", "title": "Integrations Thread Count", "default": 5, "minimum": 1, "maximum": 16, "description": "The number of threads available for API requests.", "examples": [ 5 ] }, "timeout": { "type": "integer", "title": "Integrations Timeout", "default": 15000, "description": "The number of milliseconds until an integration request times out.", "examples": [ 15000 ] } }, "required": [ "threadCount", "timeout" ] }, "retryStrategy": { "type": "object", "title": "Retry Strategy", "description": "Properties used to configure the strategy services use on crash.", "properties": { "maxRetries": { "type": "integer", "title": "Max Retries", "default": 10, "minimum": 1, "description": "Specifies the amount of times services will retry on crash before stopping.", "examples": [ 5 ] }, "retryResetTimer": { "type": "integer", "title": "Retry Reset Timer", "default": 60000, "minimum": 0, "description": "Specifies the amount of times between each retry before the count will reset in milliseconds.", "examples": [ 30000 ] } }, "required": [ "maxRetries", "retryResetTimer" ] } } }