You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1261 lines
79 KiB

# Version 9.2.2.20240415
# DO NOT EDIT THIS FILE!
# Changes to default files will be lost on update and are difficult to
# manage and support.
#
# Please make any changes to system defaults by overriding them in
# apps or $SPLUNK_HOME/etc/system/local
# (See "Configuration file precedence" in the web documentation).
#
# To override a specific setting, copy the name of the stanza and
# setting to the file where you wish to override it.
#
# This file contains possible attribute and value pairs for creating
# new rest endpoints.
#
# /////////////////////////////////////////////////////////////////////////////
# global settings
# /////////////////////////////////////////////////////////////////////////////
[global]
# indicates if auths are allowed via GET params
allowGetAuth=false
#The default handler (assuming that we have PYTHONPATH set)
pythonHandlerPath=$SPLUNK_HOME/bin/rest_handler.py
allowRestReplay=false
defaultRestReplayStanza=restreplayshc
v1APIBlockGETSearchLaunch=false
# /////////////////////////////////////////////////////////////////////////////
# internal C++ handlers
# /////////////////////////////////////////////////////////////////////////////
[masterlm:masterlm]
match=/masterlm
requireAuthentication = false
[admin:admin]
match=/admin
# certificates
[admin:certificates]
match=/admin/certificates
# login
[admin:auth]
match=/auth
members = login,trustedlogin
[login:authed]
match=/auth/login
# The 'login:*' handlers don't require pre-existing authentication since
# they are what provide the authtokens in the first place
requireAuthentication = false
# /auth/trustedlogin is only used if Single Sign On is enabled (see
# the 'trustedIP' setting in server.conf)
[login:sso]
match=/auth/trustedlogin
requireAuthentication = false
# no auth.
[admin:auth-tokens]
match=/admin/auth-tokens
requireAuthentication = false
[admin:auth-tokens-alias]
match=/authentication/auth-tokens
requireAuthentication = false
# no auth.
[admin:server-info]
match=/admin/server-info
requireAuthentication = true
[admin:server-info-alias]
match=/server/info
requireAuthentication = true
# machine & system information (cpu, memory, os limits etc)
[admin:system-info]
match=/server/sysinfo
[admin:server-status]
match=/server/status
members=limits,introspection--disk-objects--search-dispatch-artifacts:dispatch-artifacts,introspection--disk-objects--fishbucket:fishbucket,introspection--disk-objects--partitions-space:partitions-space,installed-file-integrity
# splunk software configured limits
[admin:server-status-limits]
match=/server/status/limits
members=server-status-limits-concurrency:search-concurrency
requireAuthentication = false
[admin:conf-resource-usage]
match=/server/status/conf-resource-usage
requireAuthentication = true
[admin:limits]
match=/server/status/limits/general
[admin:server-status-resource-usage]
match=/server/status/resource-usage
members=introspection--resource-usage--hostwide:hostwide,introspection--resource-usage--splunk-processes:splunk-processes,introspection--resource-usage--iostats:iostats,introspection--resource-usage--iowait:iowait
[admin:streams_group]
match = /streams
members = rtsearch,search,deployment,clusterbundles,diag,rdin,event-capture-local
# security related endpoints
[admin:server_security_group]
match = /server/security
members = crl,splunk-secret
[streams:rtsearch]
match=/streams/rtsearch
capability=rtsearch
[streams:search]
match=/streams/search
capability=search
[streams:rdin]
match=/streams/rdin
authKeyStanza=parallelreduce
[admin:server-roles]
match=/admin/server-roles
requireAuthentication = false
# deployment server related handlers.
# this handler is for downloading service classes using the streaming method.
[streams:deployment]
match=/streams/deployment
requireAuthentication=false
[streams:clusterbundles]
match=/streams/clusterbundles
authKeyStanza=clustering
[streams:diag]
match=/streams/diag
requireAuthentication=true
capability = get_diag
authKeyStanza = clustering
[streams:event-capture-local]
match=/streams/event-capture-local
requireAuthentication=true
authKeyStanza = deployment
[server-status-diag:server-status-diag]
match=/server/status/diag
requireAuthentication=true
capability = get_diag
[static-asset:static-asset]
match=/static
capability=rest_properties_get
# this handler is for getting to the deployment server rest endpoint.
[DS:deploymentServer]
match=/deployment
requireAuthentication=false
[SBA:sba]
match=/properties($|/)
capability.get=rest_properties_get
capability.post=rest_properties_set
capability.put=rest_properties_set
capability.delete=rest_properties_set
[conf-replication:conf-replication]
match=/replication/configuration
capability.get=admin_all_objects
capability.post=admin_all_objects
authKeyStanza=shclustering
[collections:collections]
match=/storage/collections/data
[admin:disaster-recovery]
match=/xrdr
members=xrdr-config:config
capability.get=admin_all_objects
capability.post=admin_all_objects
[admin:noah]
match=/noah
members=noah-config:config
capability.get=admin_all_objects
[admin:remote-output-queue]
match=/remote/queue/output
members=roq-config:config, roq-status:status
capability.get=list_remote_output_queue
capability.post=admin_all_objects
[admin:remote-input-queue]
match=/remote/queue/input
members=riq-config:config, riq-status:status, riq-dlq:dlq, riq-parse:parse, riq-bootstrap:bootstrap
capability.get=list_remote_input_queue
capability.post=admin_all_objects
[admin:cascading-replication]
match=/replication/cascading
members=cascading-plans:plans
[cascade-plan-upload:cascade-plan-upload]
match=/replication/cascading/upload/plan
[cascade-data-upload:cascade-data-upload]
match=/replication/cascading/upload/payload
authKeyStanza=cascading_replication
[kvstore-management:kvstore-management]
match=/admin/kvstore
[admin:kvstore_maintenance_group]
match=/kvstore
members=kvstoremaintenance:maintenance
authKeyStanza=shclustering
[admin:collections-handlers]
match=/storage/collections
members=collections-conf:config
[admin:dist-handlers]
match=/search/distributed
members=distsearch-setup:config,distsearch-peer:peers,distsearch-group:groups,search-head-bundles:bundle-replication-files
[admin:knowledge-bundle-handlers]
match=/search/distributed/bundle/replication
members=bundle-replication-cycles:cycles, bundle-replication-config:config
[shelper:shelper]
match=/search/shelper
[admin:scheduler]
match=/search/scheduler
[admin:search-concurrency-settings-handler]
match=/search/concurrency-settings
[admin:search-job-type-handler]
match=/search/job-type
[asyncsearch:asyncsearch]
match=/search
capability=search
[typeahead:typeahead]
match=/search/typeahead
capability=get_typeahead
[indexing-preview:indexing-preview]
match = /indexing/preview
capability = (edit_monitor or edit_upload_and_index)
[savedsearch:savedsearch]
match=/saved/searches
# workaround due to SPL-130980, this mapping will cause an error message saying catalog handler is not found in splunkd.log.
[admin:catalog_group]
match=/catalog
members=catalog
# once SPL-130980 is fixed, we shouldn't need catalog_group mapping
[admin:catalog_metricstore_group]
match=/catalog/metricstore
members=metricstore-metrics:metrics,metricstore-dimensions:dimensions,metricstore_rollup:rollup
[admin:sourcetypes]
match =/saved/sourcetypes
capability.post = edit_sourcetypes
capability.put = edit_sourcetypes
capability.delete = edit_sourcetypes
[scheduledviews:scheduledviews]
match=/scheduled/views
[input:simple]
match=/receivers/simple
capability = edit_tcp or edit_log_alert_event
[input:stream]
match=/receivers/stream
dynamic=true
capability = edit_tcp or edit_tcp_stream
[peerupload:bundle]
match=/receivers/bundle($|/)
path=$SPLUNK_HOME/var/run/searchpeers
untar=true
[bundle-delta:bundle-delta]
match=/receivers/bundle-delta($|/)
[proxybundleupload:proxybundleupload]
match=/receivers/proxy/bundle($|/)
path=$SPLUNK_HOME/var/run/proxy_bundles
untar=true
authKeyStanza = shclustering
[proxybundleuploadrshcluster:proxybundleuploadrshcluster]
match=/receivers/proxy/bundle-rsh-cluster($|/)
path=$SPLUNK_HOME/var/run/proxy_bundles
untar=true
authKeyStanza = shclustering
[admin:proxybundlelist]
match = /receivers/proxy/bundlelist
authKeyStanza = shclustering
[broker:broker]
match=/broker
authKeyStanza=deployment
requireAuthentication=false
[validate:validate]
match=/configs/validate
[spec:spec]
match=/configs/spec
[audit-trail:audit-trail]
match=/admin/audit-trail
[admin:splunk-audit]
match=/admin/audit
[telemetry-metric:telemetry-metric]
match=/telemetry-metric
[diag:diag]
match=/diag
authKeyStanza=clustering
capability = get_diag
[spl2-modules:spl2-modules]
match=/spl2
[remote-proxy:remote-proxy]
match=/remote-proxy
authKeyStanza=clustering
capability = use_remote_proxy
[register-package:register-package-endpoints]
match = /register-package-endpoints
# /////////////////////////////////////////////////////////////////////////////
# admin section groupings
# /////////////////////////////////////////////////////////////////////////////
[admin:deployment]
match=/deployment
members = deploymentclient:client
[admin:deployment_server_group]
match=/deployment/server
members = deploymentserver:config,serverclasses:serverclasses,applications:applications,serverclients:clients
[admin:authentication_group]
match=/authentication
members = auth-tokens,users,httpauth-tokens,users:changepassword,current-context
[admin:authorization_group]
match=/authorization
members = capabilities,grantable_capabilities,roles,tokens,scs_tokens,fieldfilters
[admin:workloads_group]
match=/workloads
members = workload-config:config, workload-pools:pools, workload-rules:rules, workload-status:status, workload-categories:categories, workload-policy:policy
[eai:conf-restmap]
capability.write=edit_restmap and admin_all_objects
[eai:conf-server]
capability.read=list_settings
capability.write=edit_server and admin_all_objects
[eai:conf-authentication]
capability.write=change_authentication and edit_roles and admin_all_objects
capability.read=change_authentication
[eai:conf-authorize]
capability.write=edit_roles and admin_all_objects
capability.read=edit_roles
[eai:conf-user-seed]
capability.write=edit_user_seed
capability.read=edit_user_seed
[eai:conf-web]
capability.write=edit_web_settings and admin_all_objects
[SBA:server]
match=/properties/server($|/)
capability.get=list_settings
capability.post=edit_server and admin_all_objects
capability.put=edit_server and admin_all_objects
capability.delete=edit_server and admin_all_objects
[SBA:restmap]
match=/properties/restmap($|/)
capability.post=edit_restmap and admin_all_objects
capability.put=edit_restmap and admin_all_objects
capability.delete=edit_restmap and admin_all_objects
[SBA:authentication]
match=/properties/authentication($|/)
capability.get=change_authentication
capability.post=change_authentication and edit_roles and admin_all_objects
capability.put=change_authentication and edit_roles and admin_all_objects
capability.delete=change_authentication and edit_roles and admin_all_objects
[SBA:authorize]
match=/properties/authorize($|/)
capability.get=edit_roles
capability.post=edit_roles and admin_all_objects
capability.put=edit_roles and admin_all_objects
capability.delete=edit_roles and admin_all_objects
[SBA:user-seed]
match=/properties/user-seed($|/)
capability.get=edit_user_seed
capability.post=edit_user_seed
capability.put=edit_user_seed
capability.delete=edit_user_seed
[SBA:web]
match=/properties/web($|/)
capability.get=rest_properties_get
capability.post=edit_web_settings and admin_all_objects
capability.put=edit_web_settings and admin_all_objects
capability.delete=edit_web_settings and admin_all_objects
[admin:directory]
match = /directory
[admin:providers_group]
match=/authentication/providers
members=auth-services:services,LDAP-auth:LDAP,SAML-auth:SAML,Scripted-auth:Scripted,Splunk-auth:Splunk,Token-auth:Token
[admin:Splunk-auth-alias]
match=/admin/splunk-auth
requireAuthentication = true
[admin:Token-auth-alias]
match=/admin/token-auth
requireAuthentication = true
[indexer_discovery:indexer_discovery]
match=/indexer_discovery
authKeyStanza=indexer_discovery
[admin:cluster_group]
match=/cluster
members = clusterconfig:config
authKeyStanza=clustering
[admin:cluster_manager_group]
match=/cluster/manager
members = clustermanagerbuckets:buckets,clustermanagerstatus:status,clustermanagerpeers:peers,clustermanagerredundancy:redundancy,clustermanagerinfo:info,clustermanagergeneration:generation,clustermanagercontrol:control,clustermanagerreplications:replications,clustermanagersearchheads:searchheads, clustermanagerpeerindexes:indexes, clustermanagerfixup:fixup,clustermanagersites:sites,clustermanagerbundle:bundle,clustermanagerhealth:health
authKeyStanza=clustering
[admin:clustermanagerbucketsmerge]
match=/cluster/manager/clustermanagerbucketsmerge/merge-buckets
authKeyStanza=clustering
capability=merge_buckets
[admin:cluster_master_group]
match=/cluster/master
members = clustermasterbuckets:buckets,clustermasterstatus:status,clustermasterpeers:peers,clustermasterinfo:info,clustermastergeneration:generation,clustermastercontrol:control,clustermasterreplications:replications,clustermastersearchheads:searchheads, clustermasterpeerindexes:indexes, clustermasterfixup:fixup,clustermastersites:sites,clustermasterbundle:bundle,clustermasterhealth:health
authKeyStanza=clustering
[admin:clusteractivemanager]
match = /cluster/manager/ha_active_status
requireAuthentication = false
[admin:cluster_peer_group]
match=/cluster/peer
members = clusterpeerbuckets:buckets,clusterpeerinfo:info,clusterpeercontrol:control, clusterpeersearchheadcertificate:searchheadcertificate,clusterpeerreplications:replications
authKeyStanza=clustering
[admin:cluster_slave_group]
match=/cluster/slave
members = clusterslavebuckets:buckets,clusterslaveinfo:info,clusterslavecontrol:control, clusterslavesearchheadcertificate:searchheadcertificate,clusterslavereplications:replications
authKeyStanza=clustering
[admin:cluster_searchhead_group]
match=/cluster/searchhead
members = clustersearchheadgeneration:generation,clustersearchheadconfig:searchheadconfig,clustersearchheadcontrol:control
authKeyStanza=clustering
[admin:shcluster_group]
match=/shcluster
members = shclusterconfig:config,shclusterstatus:status
authKeyStanza=shclustering
[admin:shcluster_member_ready]
match=/shcluster/member
members = shclusterready:ready
requireAuthentication=false
[admin:shcluster_captain_group]
match=/shcluster/captain
members = shclustercaptainartifacts:artifacts,shclustercaptainmembers:members,shclustercaptaininfo:info,shclustercaptaincontrol:control,shclustercaptainreplications:replications, shclustercaptainfixup:fixup, shclustercaptainjobs:jobs, shclustercaptainkvstoremigrate:kvmigrate, shclustercaptainkvstorebackup:kvstorebackup, shclustercaptainkvstoreupgrade:kvstore-upgrade
authKeyStanza=shclustering
[admin:shcluster_member_group]
match=/shcluster/member
members = shclustermemberartifacts:artifacts,shclustermemberpeers:members,shclustermemberinfo:info,shclustermembercontrol:control, shclustermemberreplications:replications,shclustermemberconsensus:consensus,shclustermemberdelegatejob:delegatejob
authKeyStanza=shclustering
[admin:kvstore_group]
match=/kvstore
members = kvstorestatus:status,kvstoreresync:resync,kvstorebackup:backup,restore,kvstoreinfo:info,kvstorecache:cache,externalconfig:config
authKeyStanza=kvstore
[admin:kvstore_engine_group]
match=/kvstore
members=kvstoreengine:engine
authKeyStanza=shclustering
[admin:kvstore_control_group]
match=/kvstore
members=kvstorecontrol:control
authKeyStanza=kvstore
[admin:kvstore_upgrade_group]
match=/kvstore
members=kvstoreupgrade:version
authKeyStanza=shclustering
[admin:licenser_group]
match=/licenser
members=licenses,pools,stacks,groups,slaves,localslave,licensermessages:messages,scriptedwarning,licenseusage:usage,peers,localpeer,managers
[admin:messages]
match=/messages
authKeyStanza=shclustering
[admin:generators]
match=/generators/guid
members=random-guid:random
requireAuthentication=false
[admin:template]
match=/template
members = template-realize:realize
requireAuthentication=false
[admin:data_group]
match=/data
members = commandsconf:commands,user-prefs,lookup-table-files,modular-inputs,vix-providers,vix-indexes,index-archiver:archiver,datamodel-files:models,introspection--disk-objects--volumes:index-volumes,introspection--disk-objects--indexes:indexes-extended,introspection--disk-objects--summaries:summaries,macros,introspection--distributed-indexes:distributed-indexes
[admin:data_indexes]
match=/data
members = indexes
maxCacheTime = 30m
[admin:datamodel-group]
match=/datamodel
members = datamodeledit:model, datamodelpivot:pivot, datamodelacceleration:acceleration, datamodelgenerate:generate
[admin:tcp_forwarders_group]
match = /data/outputs/tcp
members = tcpout-default:default,tcpout-group:group,tcpout-server:server,syslog,indexer-discovery-config:indexerdiscovery
[admin:deployment_group]
match=/deployment/server/setup/data/inputs
members = remote_all,remote_monitor,remote_script,remote_udp,remote_eventlogs,remote_perfmon
[admin:deployment_tcp_inputs_group]
match=/deployment/server/setup/data/inputs/tcp
members = remote_raw,remote_cooked,remote_ssl
[admin:deploymentsetup]
match=/deployment/server/setup/data/
members = remote_indexes
[admin:introspection_group]
match = /server/introspection
members = introspection-queues:queues,introspection-pipelines:pipelines,introspection-processors:processors,introspection-indexer:indexer
[admin:introspection_kvstore_group]
match = /server/introspection/kvstore
members = kvstore-serverstatus:serverstatus, kvstore-collectionstats:collectionstats, kvstore-replicasetstats:replicasetstats
[admin:introspection_search_group]
match = /server/introspection/search
members = introspection-savedsearches:saved, introspection-scheduler:scheduler, search-distributedmetrics:distributed, introspection-dispatchreaper:dispatch
[admin:inputs_group]
match = /data/inputs
members = all,monitor,script,http,oneshotinput:oneshot,udp
[admin:tcp_inputs_group]
match = /data/inputs/tcp
members = raw,cooked,ssl,splunktcptoken
[admin:manager]
match = /data/ui/manager
capability.post = edit_manager_xml
[admin:spl2_modules_access]
match = /spl2/modules-access
[admin:ui_data_group]
match = /data/ui
members = views,modalerts:alerts,panels,visualizations,nav,viewstates,workflow-actions,conf-times:times,ui-prefs:prefs,ui-tour,livetail,global-banner
[quarantined-status:quarantined-status]
match = /quarantined/status
requireAuthentication = true
capability = read_internal_libraries_settings
authKeyStanza = shclustering
[admin:web-features]
match = /web-features
capability.post = edit_web_features
[admin:props_group]
match = /data/props
members = props-extract:extractions,props-lookup:lookups,fieldaliases,sourcetype-rename,props-eval:calcfields
[admin:transforms_group]
match = /data/transforms
members = transforms-extract:extractions,transforms-lookup:lookups,transforms-statsd:statsdextractions,metric-schema
[ingest-rulesets:ingest-rulesets]
match = /data/ingest/rulesets
capability.get = list_ingest_rulesets
capability.post = edit_ingest_rulesets
capability.delete = edit_ingest_rulesets
authKeyStanza = clustering
[ingest-ruleset-serialize:ingest-ruleset-serialize]
match = /data/ingest/ruleset-serialize
[ingest-event-capture:ingest-event-capture]
match = /data/ingest/event-capture
capability.post = capture_ingest_events
# EAI helpers to modify rfs destination endpoint.
[admin:ingest-rfs-destinations]
match = /data/ingest/rfsdestinations
authKeyStanza = clustering
# EAI helpers for the above rulesets endpoint.
[admin:ruleset_helpers]
match = /data/ingest
members = ruleset-deployment, ruleset-status
# Add auth setting so SH can query CM for publish info. The stanza name must be
# ruleset-status here, so we can match the EAI registration name.
[admin:ruleset-status]
match = /data/ingest/ruleset-status
authKeyStanza = clustering
[admin:saved_group]
match=/saved
members = savedsearch:searches,eventtypes,ntags,fvtags
authKeyStanza=shclustering
[admin:bookmarks_group]
match=/saved/bookmarks
members = bookmarks-mc:monitoring_console
[admin:proxy_config]
match = /server/httpsettings
members = proxysettings
[admin:root_ca_truststore]
match = /admin/security/certmgr
members = truststores,certs
[admin:scheduled_group]
match=/scheduled
members = scheduledviews:views
[admin:alerts]
match=/alerts
members = alerts:fired_alerts,alert_actions,metric_alerts:metric_alerts
[admin:telemetry]
match = /telemetry
authKeyStanza = clustering
[admin:health-report-local]
match = /server/health/splunkd/local
authKeyStanza = shclustering,clustering
[ingestion-latencies:ingestion-latencies]
match = /server/health/ingestion-latencies
[admin:server_group]
match = /server
members = server-settings:settings,server-control:control,server-pipeline-sets:pipelinesets,server-info:info,logger:logger,server-roles:roles,status,health-report:health,health-report-config:health-config
[admin:storage_group]
match = /storage
members = passwords
[admin_external:localapps-python]
handlertype=python
python.version = latest
handlerfile=localapps.py
handleractions=create, edit
[admin_external:apptemplates]
handlertype=python
python.version = latest
handlerfile=apptemplates.py
handleractions=list
[admin:apps_group]
match=/apps
members=remote,deploy,apptemplates
[admin:localapps]
match=/apps/local
authKeyStanza=shclustering
[apps-backup:apps-backup]
match=/apps/backup
capability.post=admin_all_objects or apps_backup
authKeyStanza=shclustering
[apps-deploy:apps-deploy]
match=/apps/deploy
capability.post=admin_all_objects
authKeyStanza=shclustering
[apps-restore:apps-restore]
match=/apps/restore
capability.post=admin_all_objects or apps_restore
authKeyStanza=shclustering
[admin:raw_config_group]
match=/configs
members=conf-inputs:inputs,conf-wmi:wmi,conf-deploymentclient:deploymentclient
[admin:fields]
match=/data/fields
[summaryman:summaryman]
match=/summaryman
[cacheman:cacheman]
match=/cacheman
[admin:datasets]
match=/datasets
[admin:bucketmerge]
match=/bucketmerge
capability=merge_buckets
#
#
#
[admin:watchdog-pstacks]
match=/server/pstacks
[admin:watchdog]
match=/server/watchdog
[admin:federated_group]
match=/data/federated
members=federated-index:index,federated-provider:provider,federated-settings:settings
capability.post=admin_all_objects
capability.delete=admin_all_objects
[admin:datalake_group]
match=/data/datalake
members=datalake-categories:categories,datalake-index:index,datalake-ingest:ingest
capability.post=fsh_manage
capability.delete=fsh_manage
capability.get=fsh_manage
[admin:config_tracker_group]
match = /config_tracker
members = config_tracker:config
[admin:local_proxy_group]
match = /local_proxy
members = local_proxy:config
# /////////////////////////////////////////////////////////////////////////////
# eai specific handler settings
# /////////////////////////////////////////////////////////////////////////////
#
# The UI for the directory service requires that an entity have manager XML
# that defines how that entity is listed and edited.
#
# As a result, entity types that completely lack manager XML are omitted from
# the directory service. Ditto for entities that cannot be edited.
#
[eai:eventtypes]
showInDirSvc = true
[eai:savedsearch]
showInDirSvc = true
[eai:collections-conf]
showInDirSvc = true
[eai:conf-times]
showInDirSvc = true
[eai:views]
showInDirSvc = true
[eai:panels]
showInDirSvc = true
[eai:visualizations]
showInDirSvc = true
[eai:modalerts]
showInDirSvc = true
[eai:nav]
showInDirSvc = true
# No manager XML exists for manager XML itself.
[eai:manager]
showInDirSvc = false
# Because of the possible performance impact of large numbers of viewstates, do
# not include viewstates in the directory service by default.
[eai:viewstates]
showInDirSvc = false
[eai:commandsconf]
showInDirSvc = true
desc = commands
[eai:macros]
showInDirSvc = true
# Unique tag-field-value tuples are not editable.
[eai:tags]
showInDirSvc = false
# Tags by tag name do not support ACL read or write. The UI looks bad when some
# entities support sharing and permissions while others do not.
[eai:ntags]
showInDirSvc = false
[eai:fvtags]
showInDirSvc = true
[eai:transforms-extract]
showInDirSvc = true
[eai:transforms-lookup]
showInDirSvc = true
[eai:workflow-actions]
showInDirSvc = true
# The manager XML for lookup table files does not define an edit screen.
[eai:lookup-table-files]
showInDirSvc = false
[eai:props-extract]
showInDirSvc = true
[eai:props-lookup]
showInDirSvc = true
[eai:fieldaliases]
showInDirSvc = true
[eai:sourcetype-rename]
showInDirSvc = true
[eai:global-banner]
showInDirSvc = true
#//////////////////////////////////////////////////////////////////////////////
# splunkbase proxy handler
#//////////////////////////////////////////////////////////////////////////////
[proxy:appsbrowser]
match=/appsbrowser
capability=rest_properties_get
destination=https://splunkbase.splunk.com/api
capability.get=rest_apps_view
#//////////////////////////////////////////////////////////////////////////////
# splunkbase handler
#//////////////////////////////////////////////////////////////////////////////
[splunkbase:splunkbase]
match=/splunkbase
capability.post=admin_all_objects
# /////////////////////////////////////////////////////////////////////////////
# script-based handlers
# /////////////////////////////////////////////////////////////////////////////
[script:RemoteAppsHandlerList]
match=/apps/remote/?$
scripttype=python
python.version = latest
handler=appsmanager.RemoteAppsHandlerList
capability.get=rest_apps_view
output_modes = xml,json
[script:RemoteAppsLogin]
match=/apps/remote/login/?
scripttype=python
python.version = latest
handler=appsmanager.RemoteAppsLogin
capability.post=rest_apps_view
output_modes = xml,json
[script:RemoteAppsManagerEntries]
match=/apps/remote/entries(byid)?/?
scripttype=python
python.version = latest
handler=appsmanager.RemoteAppsManager
capability.get=rest_apps_view
capability.post=rest_apps_management
capability.delete=rest_apps_management
output_modes = xml
[script:RemoteAppsManagerCategories]
match=/apps/remote/categories/?
scripttype=python
python.version = latest
handler=appsmanager.RemoteAppsManager
capability.get=rest_apps_view
capability.post=rest_apps_management
capability.delete=rest_apps_management
output_modes = xml
[script:pdfgenHandler]
match = /pdfgen/render
scripttype = python
python.version = latest
handler = pdfgen_endpoint.PDFGenHandler
requireAuthentication = true
[script:fieldExtractorGenerateRegex]
match = /field_extractor/generate_regex
scripttype = python
python.version = latest
handler = field_extractor.RegexGenHandler
requireAuthentication = true
# /////////////////////////////////////////////////////////////////////////////
# EAI validation rules
# /////////////////////////////////////////////////////////////////////////////
[validation:bookmarks-mc]
name = validate( len('name') <= 25, "Name can only be 25 characters long" )
url = validate( match('url', '^https?://'), "Value of argument 'url' must begin with http:// or https://", \
match('url', 'splunk_monitoring_console'), "Value of argument 'url' must contain 'splunk_monitoring_console'" )
[validation:metric_alerts]
trigger.evaluation_per_group = validate( is_bool('trigger.evaluation_per_group'), "Value of argument 'trigger.evaluation_per_group' must be a boolean")
trigger.action_per_group = validate( is_bool('trigger.action_per_group'), "Value of argument 'trigger.action_per_group' must be a boolean")
trigger.suppress = validate( match('trigger.suppress', "^(0|\d+m)$"), "Value of argument trigger.suppress must be 0, or of the format <num>m")
trigger.expires = validate( match('trigger.expires', "^(0|\d+(m|h|d))$"), "Value of argument trigger.expires must be 0, or of the format <num>[mhd]")
trigger.threshold = validate( match('trigger.threshold', "^(always|once)(\s+after\s+(\d+m))?$"), "Value of argument trigger.threshold must be of the format [always|once|always after <number>m|once after <number>m]")
# This stanza is factored out of [validation:savedsearch] so it can be shared by validation:metric_alerts
[validation:alert_action_part]
action.email.sendresults = validate( is_bool('action.email.sendresults'), "Value of argument 'action.email.sendresults' must be a boolean")
action.email.sendpdf = validate( is_bool('action.email.sendpdf'), "Value of argument 'action.email.sendpdf' must be a boolean")
action.email.sendcsv = validate( is_bool('action.email.sendcsv'), "Value of argument 'action.email.sendcsv' must be a boolean")
action.email.sendpng = validate( is_bool('action.email.sendpng'), "Value of argument 'action.email.sendpng' must be a boolean")
action.email.inline = validate( is_bool('action.email.inline'), "Value of argument 'action.email.inline' must be a boolean")
action.email.priority = validate( match('action.email.priority', "^([1-5])$"), "Value of argument 'action.email.priority' must be either '1', '2', '3', '4', '5'")
action.email.include.results_link = validate( is_bool('action.email.include.results_link'), "Value of argument 'action.email.include.results_link' must be a boolean")
action.email.include.search = validate( is_bool('action.email.include.search'), "Value of argument 'action.email.include.search' must be a boolean")
action.email.include.trigger = validate( is_bool('action.email.include.trigger'), "Value of argument 'action.email.include.trigger' must be a boolean")
action.email.include.trigger_time = validate( is_bool('action.email.include.trigger_time'), "Value of argument 'action.email.include.trigger_time' must be a boolean")
action.email.include.view_link = validate( is_bool('action.email.include.view_link'), "Value of argument 'action.email.include.view_link' must be a boolean")
action.email.to = validate( match('action.email.to', "(?i)^((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$)))*$"), "One of the email addresses in 'action.email.to' is invalid")
action.email.cc = validate( match('action.email.cc', "(?i)^((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$)))*$"), "One of the email addresses in 'action.email.cc' is invalid")
action.email.bcc = validate( match('action.email.bcc', "(?i)^((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}]+)\})?\$)))*$"), "One of the email addresses in 'action.email.bcc' is invalid")
action.email.useNSSubject= validate( match('action.email.useNSSubject', "^(0|1)$"), "Value of argument 'action.email.useNSSubject' must be either '0' or '1'")
# keep this rule in agreement with runshellscript.py internal validation, as scripts can be invoked directly from a search string
action.script.filename = validate( NOT match('action.script.filename', "\.\.|/|\\\\|:"), "Script filename cannot contain '..', '/', '\\', or ':'")
action.lookup.filename = validate( match('action.lookup.filename', ".*\.csv") AND NOT match('action.lookup.filename', "\.\.|/|\\\\"), "Lookup filename must end with .csv and cannot contain '..', '/', or '\\'")
[validation:scheduler_limits]
async_saved_search_fetch = validate( is_bool('async_saved_search_fetch'), "Value of argument 'async_saved_search_fetch' must be a boolean.")
async_saved_search_interval = validate( isint('async_saved_search_interval') AND 'async_saved_search_interval'>=0, "Value of argument 'async_saved_search_interval' must be a non-negative integer.")
async_admission_eval_interval = validate( isint('async_admission_eval_interval') AND 'async_admission_eval_interval'>=0, "Value of argument 'async_admission_eval_interval' must be a non-negative integer.")
[validation:savedsearch]
alert.digest_mode = validate( is_bool('alert.digest_mode'), "Value of argument 'alert.digest_mode' must be a boolean")
alert.severity = 'alert.severity'>0 AND 'alert.severity'<7
alert.suppress = validate( is_bool('alert.suppress'), "Value of argument 'alert.suppress' must be a boolean")
alert.suppress.period = validate ( match('alert.suppress.period', "(?i)^((ack)|(\d+[hmsd]?))$"), "Value of argument alert.suppress.period must be of the format <integer>[smhd]? or ack")
alert.expires = validate ( match('alert.expires', "^\d+[hmsd]?$"), "Value of argument alert.expires must be of the format <integer>[smhd]?")
alert.managedBy = validate( typeof('alert.managedBy') == "String", "Value of argument 'alert.managedBy' must be a string")
auto_summarize.timespan = validate ( match('auto_summarize.timespan',"(^\d+((s|(sec(onds?)?))|(m|min(utes?)?)|(h|h(rs?)|hours?)|(d(ays?)?)|(mon(ths?)?)|([umcd]s))?)(\s*,\s*(\d+((s|(sec(onds?)?))|(m|min(utes?)?)|(h|h(rs?)|hours?)|(d(ays?)?)|(mon(ths?)?)|([umcd]s))?)+)*$"), "Invalid span length syntax used for argument auto_summarize.timespan")
dispatch.indexedRealtime = validate( is_bool('dispatch.indexedRealtime'), "Value of argument 'dispatch.indexedRealtime' must be a boolean")
dispatch.auto_cancel = validate( isint('dispatch.auto_cancel') AND 'dispatch.auto_cancel'>=0, "Value of argument 'dispatch.auto_cancel' must be a non-negative integer.")
dispatch.auto_pause = validate( isint('dispatch.auto_pause') AND 'dispatch.auto_pause'>=0, "Value of argument 'dispatch.auto_pause' must be a non-negative integer.")
# UI Display Options
display.general.enablePreview = validate( match('display.general.enablePreview', "^(0|1)$"), "Value of argument 'display.general.enablePreview' must be either '0' or '1'")
display.general.type = validate( match('display.general.type', "^(events|statistics|visualizations)$"), "Value of argument 'display.general.type' must be either 'events', 'statistics', 'visualizations'")
display.general.timeRangePicker.show = validate( match('display.general.timeRangePicker.show', "^(0|1)$"), "Value of argument 'display.general.timeRangePicker.show' must be either '0' or '1'")
display.general.migratedFromViewState = validate( match('display.general.migratedFromViewState', "^(0|1)$"), "Value of argument 'display.general.migratedFromViewState' must be either '0' or '1'")
display.events.type = validate( match('display.events.type', "^(raw|list|table)$"), "Value of argument 'display.events.type' must be either 'raw', 'list', or 'table'")
display.events.rowNumbers = validate( match('display.events.rowNumbers', "^(0|1)$"), "Value of argument 'display.events.rowNumbers' must be either '0' or '1'")
display.events.maxLines = validate( isint('display.events.maxLines'), "Value of argument 'display.events.maxLines' must be an integer")
display.events.raw.drilldown = validate( match('display.events.raw.drilldown', "^(inner|outer|full|none)$"), "Value of argument 'display.events.raw.drilldown' must be either 'inner', 'outer', 'full', or 'none'")
display.events.list.drilldown = validate( match('display.events.list.drilldown', "^(inner|outer|full|none)$"), "Value of argument 'display.events.list.drilldown' must be either 'inner', 'outer', 'full', or 'none'")
display.events.list.wrap = validate( match('display.events.list.wrap', "^(0|1)$"), "Value of argument 'display.events.list.wrap' must be either '0' or '1'")
display.events.table.drilldown = validate( match('display.events.table.drilldown', "^(0|1)$"), "Value of argument 'display.events.table.drilldown' must be either '0' or '1'")
display.events.table.wrap = validate( match('display.events.table.wrap', "^(0|1)$"), "Value of argument 'display.events.table.wrap' must be either '0' or '1'")
display.statistics.rowNumbers = validate( match('display.statistics.rowNumbers', "^(0|1)$"), "Value of argument 'display.statistics.rowNumbers' must be either '0' or '1'")
display.statistics.wrap = validate( match('display.statistics.wrap', "^(0|1)$"), "Value of argument 'display.statistics.wrap' must be either '0' or '1'")
display.statistics.overlay = validate( match('display.statistics.overlay', "^(none|heatmap|highlow)$"), "Value of argument 'display.statistics.overlay' must be either 'none', 'heatmap', or 'highlow'")
display.statistics.drilldown = validate( match('display.statistics.drilldown', "^(row|cell|none)$"), "Value of argument 'display.statistics.drilldown' must be either 'row', 'cell', or 'none'")
display.statistics.totalsRow = validate( match('display.statistics.totalsRow', "^(0|1)$"), "Value of argument 'display.statistics.totalsRow' must be either '0' or '1'")
display.statistics.percentagesRow = validate( match('display.statistics.percentagesRow', "^(0|1)$"), "Value of argument 'display.statistics.percentagesRow' must be either '0' or '1'")
display.statistics.show = validate( match('display.statistics.show', "^(0|1)$"), "Value of argument 'display.statistics.show' must be either '0' or '1'")
display.visualizations.trellis.enabled = validate( match('display.visualizations.trellis.enabled', "^(0|1)$"), "Value of argument 'display.visualizations.trellis.enabled' must be either '0' or '1'")
display.visualizations.trellis.scales.shared = validate( match('display.visualizations.trellis.scales.shared', "^(0|1)$"), "Value of argument 'display.visualizations.trellis.scales.shared' must be either '0' or '1'")
display.visualizations.trellis.size = validate( match('display.visualizations.trellis.size', "^(small|medium|large)$"), "Value of argument 'display.visualizations.trellis.size' must be either 'small', 'medium', or 'large'")
display.visualizations.trellis.splitBy = validate( typeof('display.visualizations.trellis.splitBy') == "String", "Value of argument 'display.visualizations.trellis.splitBy' must be a string")
display.visualizations.show = validate( match('display.visualizations.show', "^(0|1)$"), "Value of argument 'display.visualizations.show' must be either '0' or '1'")
display.visualizations.type = validate( match('display.visualizations.type', "^(charting|singlevalue|mapping|custom)$"), "Value of argument 'display.visualizations.type' must be either 'charting', 'singlevalue', 'mapping' or 'custom'")
display.visualizations.chartHeight = validate( isint('display.visualizations.chartHeight'), "Value of argument 'display.visualizations.chartHeight' must be an integer")
display.visualizations.charting.chart = validate( match('display.visualizations.charting.chart', "^(line|area|column|bar|pie|scatter|bubble|radialGauge|fillerGauge|markerGauge)$"), "Value of argument 'display.visualizations.charting.chart' must be either 'line', 'area', 'column', 'bar', 'pie', 'scatter', 'bubble', 'radialGauge', 'fillerGauge', or 'markerGauge'")
display.visualizations.charting.chart.stackMode = validate( match('display.visualizations.charting.chart.stackMode', "^(default|stacked|stacked100)$"), "Value of argument 'display.visualizations.charting.chart.stackMode' must be either 'default', 'stacked', or 'stacked100'")
display.visualizations.charting.chart.nullValueMode = validate( match('display.visualizations.charting.chart.nullValueMode', "^(gaps|zero|connect)$"), "Value of argument 'display.visualizations.charting.chart.nullValueMode' must be either 'gaps', 'zero', or 'connect'")
display.visualizations.charting.chart.overlayFields = validate( typeof('display.visualizations.charting.chart.overlayFields') == "String", "Value of argument 'display.visualizations.charting.chart.overlayFields' must be a string")
display.visualizations.charting.drilldown = validate( match('display.visualizations.charting.drilldown', "^(all|none)$"), "Value of argument 'display.visualizations.charting.drilldown' must be either 'all' or 'none'")
display.visualizations.charting.chart.style = validate( match('display.visualizations.charting.chart.style', "^(minimal|shiny)$"), "Value of argument 'display.visualizations.charting.chart.style' must be either 'minimal' or 'shiny'")
display.visualizations.charting.layout.splitSeries = validate( match('display.visualizations.charting.layout.splitSeries', "^(0|1)$"), "Value of argument 'display.visualizations.charting.layout.splitSeries' must be either '0' or '1'")
display.visualizations.charting.legend.mode = validate( match('display.visualizations.charting.legend.mode', "^(standard|seriesCompare)$"), "Value of argument 'display.visualizations.charting.legend.mode' must be 'seriesCompare' or 'standard'")
display.visualizations.charting.layout.splitSeries.allowIndependentYRanges = validate( match('display.visualizations.charting.layout.splitSeries.allowIndependentYRanges', "^(0|1)$"), "Value of argument 'display.visualizations.charting.layout.splitSeries.allowIndependentYRanges' must be either '0' or '1'")
display.visualizations.charting.legend.placement = validate( match('display.visualizations.charting.legend.placement', "^(right|bottom|top|left|none)$"), "Value of argument 'display.visualizations.charting.legend.placement' must be either 'right', 'bottom', 'top', 'left', or 'none'")
display.visualizations.charting.legend.labelStyle.overflowMode = validate( match('display.visualizations.charting.legend.labelStyle.overflowMode', "^(ellipsisEnd|ellipsisMiddle|ellipsisStart)$"), "Value of argument 'display.visualizations.charting.legend.labelStyle.overflowMode' must be either 'ellipsisEnd', 'ellipsisMiddle', or 'ellipsisStart'")
display.visualizations.charting.axisTitleX.text = validate( typeof('display.visualizations.charting.axisTitleX.text') == "String", "Value of argument 'display.visualizations.charting.axisTitleX.text' must be a string")
display.visualizations.charting.axisTitleY.text = validate( typeof('display.visualizations.charting.axisTitleY.text') == "String", "Value of argument 'display.visualizations.charting.axisTitleY.text' must be a string")
display.visualizations.charting.axisTitleY2.text = validate( typeof('display.visualizations.charting.axisTitleY2.text') == "String", "Value of argument 'display.visualizations.charting.axisTitleY2.text' must be a string")
display.visualizations.charting.axisTitleX.visibility = validate( match('display.visualizations.charting.axisTitleX.visibility', "^(visible|collapsed)$"), "Value of argument 'display.visualizations.charting.axisTitleX.visibility' must be either 'visible' or 'collapsed'")
display.visualizations.charting.axisTitleY.visibility = validate( match('display.visualizations.charting.axisTitleY.visibility', "^(visible|collapsed)$"), "Value of argument 'display.visualizations.charting.axisTitleY.visibility' must be either 'visible' or 'collapsed'")
display.visualizations.charting.axisTitleY2.visibility = validate( match('display.visualizations.charting.axisTitleY2.visibility', "^(visible|collapsed)$"), "Value of argument 'display.visualizations.charting.axisTitleY2.visibility' must be either 'visible' or 'collapsed'")
display.visualizations.charting.axisY2.enabled = validate( match('display.visualizations.charting.axisY2.enabled', "^(0|1)$"), "Value of argument 'display.visualizations.charting.axisY2.enabled must be either '0' or '1'")
display.visualizations.charting.axisX.scale = validate( match('display.visualizations.charting.axisX.scale', "^(linear|log)$"), "Value of argument 'display.visualizations.charting.axisX.scale' must be either 'linear' or 'log'")
display.visualizations.charting.axisY.scale = validate( match('display.visualizations.charting.axisY.scale', "^(linear|log)$"), "Value of argument 'display.visualizations.charting.axisY.scale' must be either 'linear' or 'log'")
display.visualizations.charting.axisY2.scale = validate( match('display.visualizations.charting.axisY2.scale', "^(linear|log|inherit)$"), "Value of argument 'display.visualizations.charting.axisY2.scale' must be either 'linear' or 'log' or 'inherit'")
display.visualizations.charting.axisX.abbreviation = validate( match('display.visualizations.charting.axisX.abbreviation', "^(none|auto)$"), "Value of argument 'display.visualizations.charting.axisX.abbreviation' must be either 'none' or 'auto'")
display.visualizations.charting.axisY.abbreviation = validate( match('display.visualizations.charting.axisY.abbreviation', "^(none|auto)$"), "Value of argument 'display.visualizations.charting.axisY.abbreviation' must be either 'none' or 'auto'")
display.visualizations.charting.axisY2.abbreviation = validate( match('display.visualizations.charting.axisY2.abbreviation', "^(none|auto)$"), "Value of argument 'display.visualizations.charting.axisY2.abbreviation' must be either 'none' or 'auto'")
display.visualizations.charting.axisLabelsX.majorLabelStyle.overflowMode = validate( match('display.visualizations.charting.axisLabelsX.majorLabelStyle.overflowMode', "^(ellipsisMiddle|ellipsisNone)$"), "Value of argument 'display.visualizations.charting.axisLabelsX.majorLabelStyle.overflowMode must be either 'ellipsisMiddle' or 'ellipsisNone'")
display.visualizations.charting.axisLabelsX.majorLabelStyle.rotation = validate( match('display.visualizations.charting.axisLabelsX.majorLabelStyle.rotation', "^(-90|-45|0|45|90)$"), "Value of argument 'display.visualizations.charting.axisLabelsX.majorLabelStyle.rotation must be either '-90', '-45', '0', '45', or '90'")
display.visualizations.charting.axisLabelsX.majorUnit = validate( isnum('display.visualizations.charting.axisLabelsX.majorUnit') OR match('display.visualizations.charting.axisLabelsX.majorUnit', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisLabelsX.majorUnit' must be either a number or 'auto'")
display.visualizations.charting.axisLabelsY.majorUnit = validate( isnum('display.visualizations.charting.axisLabelsY.majorUnit') OR match('display.visualizations.charting.axisLabelsY.majorUnit', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisLabelsY.majorUnit' must be either a number or 'auto'")
display.visualizations.charting.axisLabelsY2.majorUnit = validate( isnum('display.visualizations.charting.axisLabelsY2.majorUnit') OR match('display.visualizations.charting.axisLabelsY2.majorUnit', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisLabelsY2.majorUnit' must be either a number or 'auto'")
display.visualizations.charting.axisX.minimumNumber = validate( isnum('display.visualizations.charting.axisX.minimumNumber') OR match('display.visualizations.charting.axisX.minimumNumber', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisX.minimumNumber' must be either a number or 'auto'")
display.visualizations.charting.axisY.minimumNumber = validate( isnum('display.visualizations.charting.axisY.minimumNumber') OR match('display.visualizations.charting.axisY.minimumNumber', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisY.minimumNumber' must be either a number or 'auto'")
display.visualizations.charting.axisY2.minimumNumber = validate( isnum('display.visualizations.charting.axisY2.minimumNumber') OR match('display.visualizations.charting.axisY2.minimumNumber', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisY2.minimumNumber' must be either a number or 'auto'")
display.visualizations.charting.axisX.maximumNumber = validate( isnum('display.visualizations.charting.axisX.maximumNumber') OR match('display.visualizations.charting.axisX.maximumNumber', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisX.maximumNumber' must be either a number or 'auto'")
display.visualizations.charting.axisY.maximumNumber = validate( isnum('display.visualizations.charting.axisY.maximumNumber') OR match('display.visualizations.charting.axisY.maximumNumber', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisY.maximumNumber' must be either a number or 'auto'")
display.visualizations.charting.axisY2.maximumNumber = validate( isnum('display.visualizations.charting.axisY2.maximumNumber') OR match('display.visualizations.charting.axisY2.maximumNumber', "^(auto)$"), "Value of argument 'display.visualizations.charting.axisY2.maximumNumber' must be either a number or 'auto'")
display.visualizations.charting.chart.sliceCollapsingThreshold = validate( isnum('display.visualizations.charting.chart.sliceCollapsingThreshold'), "Value of argument 'display.visualizations.charting.chart.sliceCollapsingThreshold' must be a number")
display.visualizations.charting.chart.bubbleMaximumSize = validate( isint('display.visualizations.charting.chart.bubbleMaximumSize'), "Value of argument 'display.visualizations.charting.chart.bubbleMaximumSize' must be an integer")
display.visualizations.charting.chart.bubbleMinimumSize = validate( isint('display.visualizations.charting.chart.bubbleMinimumSize'), "Value of argument 'display.visualizations.charting.chart.bubbleMinimumSize' must be an integer")
display.visualizations.charting.chart.bubbleSizeBy = validate( match('display.visualizations.charting.chart.bubbleSizeBy', "^(area|diameter)$"), "Value of argument 'display.visualizations.charting.chart.bubbleSizeBy' must be either 'area' or 'diameter'")
display.visualizations.charting.chart.showDataLabels = validate(match('display.visualizations.charting.chart.showDataLabels', "^(all|none|minmax)$"), "Value of argument 'display.visualizations.charting.chart.showDataLabels' must be either 'all', 'none' or 'minmax'")
display.visualizations.charting.lineWidth = validate( isnum('display.visualizations.charting.lineWidth'), "Value of argument 'display.visualizations.charting.lineWidth' must be a number")
display.visualizations.charting.fieldColors = validate( is_json('display.visualizations.charting.fieldColors'), "Value of argument 'display.visualizations.charting.fieldColors' must be a valid json")
display.visualizations.charting.fieldDashStyles = validate( typeof('display.visualizations.charting.fieldDashStyles') == "String", "Value of argument 'display.visualizations.charting.fieldDashStyles' must be a string")
display.visualizations.custom.drilldown = validate( match('display.visualizations.custom.drilldown', "^(all|none)$"), "Value of argument 'display.visualizations.custom.drilldown' must be either 'all' or 'none'")
display.visualizations.custom.height = validate( isint('display.visualizations.custom.height'), "Value of argument 'display.visualizations.custom.height' must be an integer")
display.visualizations.singlevalueHeight = validate( isint('display.visualizations.singlevalueHeight'), "Value of argument 'display.visualizations.singlevalueHeight' must be an integer")
display.visualizations.singlevalue.beforeLabel = validate( typeof('display.visualizations.singlevalue.beforeLabel') == "String", "Value of argument 'display.visualizations.singlevalue.beforeLabel' must be a string")
display.visualizations.singlevalue.afterLabel = validate( typeof('display.visualizations.singlevalue.afterLabel') == "String", "Value of argument 'display.visualizations.singlevalue.afterLabel' must be a string")
display.visualizations.singlevalue.underLabel = validate( typeof('display.visualizations.singlevalue.underLabel') == "String", "Value of argument 'display.visualizations.singlevalue.underLabel' must be a string")
display.visualizations.singlevalue.unit = validate( typeof('display.visualizations.singlevalue.unit') == "String", "Value of argument 'display.visualizations.singlevalue.unit' must be a string")
display.visualizations.singlevalue.unitPosition = validate( match('display.visualizations.singlevalue.unitPosition', "^(before|after)$"), "Value of argument 'display.visualizations.singlevalue.unitPosition' must be either 'before' or after'")
display.visualizations.singlevalue.drilldown = validate( match('display.visualizations.singlevalue.drilldown', "^(all|none)$"), "Value of argument 'display.visualizations.singlevalue.drilldown' must be either 'all' or 'none'")
display.visualizations.singlevalue.colorMode = validate( match('display.visualizations.singlevalue.colorMode', "^(block|none)$"), "Value of argument 'display.visualizations.singlevalue.colorMode' must be either 'block' or 'none'")
display.visualizations.singlevalue.rangeValues = validate( isstr('display.visualizations.singlevalue.rangeValues'), "Value of argument 'display.visualizations.singlevalue.rangeValues' must be a string")
display.visualizations.singlevalue.rangeColors = validate( isstr('display.visualizations.singlevalue.rangeColors'), "Value of argument 'display.visualizations.singlevalue.rangeColors' must be a string")
display.visualizations.singlevalue.trendInterval = validate( isstr('display.visualizations.singlevalue.trendInterval'), "Value of argument 'display.visualizations.singlevalue.trendInterval' must be a string")
display.visualizations.singlevalue.trendColorInterpretation = validate( match('display.visualizations.singlevalue.trendColorInterpretation', "^(standard|inverse)$"), "Value of argument 'display.visualizations.singlevalue.trendColorInterpretation' must be either 'standard' or 'inverse'")
display.visualizations.singlevalue.showTrendIndicator = validate( match('display.visualizations.singlevalue.showTrendIndicator', "^(0|1)$"), "Value of argument 'display.visualizations.singlevalue.showTrendIndicator' must be either '0' or '1'")
display.visualizations.singlevalue.showSparkline = validate( match('display.visualizations.singlevalue.showSparkline', "^(0|1)$"), "Value of argument 'display.visualizations.singlevalue.showSparkline' must be either '0' or '1'")
display.visualizations.singlevalue.trendDisplayMode = validate( match('display.visualizations.singlevalue.trendDisplayMode', "^(percent|absolute)$"), "Value of argument 'display.visualizations.singlevalue.trendDisplayMode' must be either 'percent' or 'absolute'")
display.visualizations.singlevalue.colorBy = validate( match('display.visualizations.singlevalue.colorBy', "^(value|trend)$"), "Value of argument 'display.visualizations.singlevalue.colorby' must be either 'value' or 'trend'")
display.visualizations.singlevalue.useColors = validate( match('display.visualizations.singlevalue.useColors', "^(0|1)$"), "Value of argument 'display.visualizations.singlevalue.useColors' must be either '0' or '1'")
display.visualizations.singlevalue.numberPrecision = validate( match('display.visualizations.singlevalue.numberPrecision', "^(0|0.0|0.00|0.000|0.0000)$"), "Value of argument 'display.visualizations.singlevalue.numberPrecision' must be either '0', '0.0', '0.00', '0.000', or '0.0000'")
display.visualizations.singlevalue.useThousandSeparators = validate( match('display.visualizations.singlevalue.useThousandSeparators', "^(0|1)$"), "Value of argument 'display.visualizations.singlevalue.useThousandSeparators' must be either '0' or '1'")
display.visualizations.mapHeight = validate( isint('display.visualizations.mapHeight'), "Value of argument 'display.visualizations.mapHeight' must be an integer")
display.visualizations.mapping.type = validate( match('display.visualizations.mapping.type', "^(marker|choropleth)$"), "Value of argument 'display.visualizations.mapping.type' must be either 'marker' or 'choropleth'")
display.visualizations.mapping.drilldown = validate( match('display.visualizations.mapping.drilldown', "^(all|none)$"), "Value of argument 'display.visualizations.mapping.drilldown' must be either 'all' or 'none'")
display.visualizations.mapping.map.center = validate( match('display.visualizations.mapping.map.center', "^\s*\([-+.0-9]+\s*,\s*[-+.0-9]+\)\s*$"), "Value of argument 'display.visualizations.mapping.map.center' must be of the form '(<lat>,<long>)'")
display.visualizations.mapping.map.zoom = validate( isint('display.visualizations.mapping.map.zoom'), "Value of argument 'display.visualizations.mapping.map.zoom' must be an integer")
display.visualizations.mapping.map.scrollZoom = validate( match('display.visualizations.mapping.map.scrollZoom', "^(0|1)$"), "Value of argument 'display.visualization.mapping.map.scrollZoom' must be either '0' or '1'")
display.visualizations.mapping.map.panning = validate( match('display.visualizations.mapping.map.panning', "^(0|1)$"), "Value of argument 'display.visualization.mapping.map.panning' must be either '0' or '1'")
display.visualizations.mapping.choroplethLayer.colorMode = validate( match('display.visualizations.mapping.choroplethLayer.colorMode', "^(auto|sequential|divergent|categorical)$"), "Value of argument 'display.visualizations.mapping.choroplethLayer.colorMode' must be either 'auto', 'sequential', 'divergent' or 'categorical'")
display.visualizations.mapping.choroplethLayer.colorBins = validate( isint('display.visualizations.mapping.choroplethLayer.colorBins'), "Value of argument 'display.visualizations.mapping.choroplethLayer.colorBins' must be an integer")
display.visualizations.mapping.choroplethLayer.neutralPoint = validate( isnum('display.visualizations.mapping.choroplethLayer.neutralPoint'), "Value of argument 'display.visualizations.mapping.choroplethLayer.neutralPoint' must be a number")
display.visualizations.mapping.choroplethLayer.shapeOpacity = validate( isnum('display.visualizations.mapping.choroplethLayer.shapeOpacity'), "Value of argument 'display.visualizations.mapping.choroplethLayer.shapeOpacity' must be a number")
display.visualizations.mapping.choroplethLayer.showBorder = validate( match('display.visualizations.mapping.choroplethLayer.showBorder', "^(0|1)$"), "Value of argument 'display.visualizations.mapping.choroplethLayer.showBorder' must be either '0' or '1'")
display.visualizations.mapping.markerLayer.markerOpacity = validate( isnum('display.visualizations.mapping.markerLayer.markerOpacity'), "Value of argument 'display.visualizations.mapping.markerLayer.markerOpacity' must be a number")
display.visualizations.mapping.markerLayer.markerMinSize = validate( isint('display.visualizations.mapping.markerLayer.markerMinSize'), "Value of argument 'display.visualizations.mapping.markerLayer.markerMinSize' must be an integer")
display.visualizations.mapping.markerLayer.markerMaxSize = validate( isint('display.visualizations.mapping.markerLayer.markerMaxSize'), "Value of argument 'display.visualizations.mapping.markerLayer.markerMaxSize' must be an integer")
display.visualizations.mapping.data.maxClusters = validate( isint('display.visualizations.mapping.data.maxClusters'), "Value of argument 'display.visualizations.mapping.data.maxClusters' must be an integer")
display.visualizations.mapping.showTiles = validate( match('display.visualizations.mapping.showTiles', "^(0|1)$"), "Value of argument 'display.visualizations.mapping.showTiles' must be either '0' or '1'")
display.visualizations.mapping.tileLayer.tileOpacity = validate( isnum('display.visualizations.mapping.tileLayer.tileOpacity'), "Value of argument 'display.visualizations.mapping.tileLayer.tileOpacity' must be a number")
display.visualizations.mapping.tileLayer.minZoom = validate( isint('display.visualizations.mapping.tileLayer.minZoom'), "Value of argument 'display.visualizations.mapping.tileLayer.minZoom' must be an integer")
display.visualizations.mapping.tileLayer.maxZoom = validate( isint('display.visualizations.mapping.tileLayer.maxZoom'), "Value of argument 'display.visualizations.mapping.tileLayer.maxZoom' must be an integer")
display.visualizations.mapping.legend.placement = validate( match('display.visualizations.mapping.legend.placement', "^(bottomright|none)$"), "Value of argument 'display.visualizations.mapping.legend.placement' must be either 'bottomright' or 'none'")
display.page.search.mode = validate( match('display.page.search.mode', "^(fast|smart|verbose)$"), "Value of argument 'display.page.search.mode' must be either 'fast', 'smart', or 'verbose'")
display.page.search.tab = validate( match('display.page.search.tab', "^(events|statistics|visualizations|patterns)$"), "Value of argument 'display.page.search.tab' must be either 'events', 'statistics', 'visualizations' or 'patterns'")
display.page.search.timeline.format = validate( match('display.page.search.timeline.format', "^(hidden|compact|full)$"), "Value of argument 'display.page.search.timeline.format' must be either 'hidden', 'compact', or 'full'")
display.page.search.timeline.scale = validate( match('display.page.search.timeline.scale', "^(linear|log)$"), "Value of argument 'display.page.search.timeline.scale' must be either 'linear' or 'log'")
display.page.search.showFields = validate( match('display.page.search.showFields', "^(0|1)$"), "Value of argument 'display.page.search.showFields' must be either '0' or '1'")
display.page.search.patterns.sensitivity = validate( isnum('display.page.search.patterns.sensitivity') AND 'display.page.search.patterns.sensitivity'>=0 AND 'display.page.search.patterns.sensitivity'<=1, "Value of argument 'display.page.search.patterns.sensitivity' must be a number between 0 and 1")
[validation:ui-prefs]
display.prefs.autoOpenSearchAssistant = validate( match('display.prefs.autoOpenSearchAssistant', "^(0|1)$"), "Value of argument 'display.prefs.autoOpenSearchAssistant' must be either '0' or '1'")
display.prefs.timeline.height = validate( isstr('display.prefs.timeline.height'), "Value of argument 'display.prefs.timeline.height' must be a string")
display.prefs.timeline.minimized = validate( match('display.prefs.timeline.minimized', "^(0|1)$"), "Value of argument 'display.prefs.timeline.minimized' must be either '0' or '1'")
display.prefs.timeline.minimalMode = validate( match('display.prefs.timeline.minimalMode', "^(0|1)$"), "Value of argument 'display.prefs.timeline.minimalMode' must be either '0' or '1'")
display.prefs.aclFilter = validate( match('display.prefs.aclFilter', "^(none|app|owner)$"), "Value of argument 'display.prefs.aclFilter' must be either 'none', 'app', or 'owner'")
display.prefs.appFilter = validate( isstr('display.prefs.appFilter'), "Value of argument 'display.prefs.appFilter' must be a string")
display.prefs.searchContext = validate( isstr('display.prefs.searchContext'), "Value of argument 'display.prefs.searchContext' must be a string")
display.prefs.events.count = validate( match('display.prefs.events.count', "^(10|20|50)$"), "Value of argument 'display.prefs.events.count' must be either '10', '20', or '50'")
display.prefs.statistics.count = validate( match('display.prefs.statistics.count', "^(10|20|50|100)$"), "Value of argument 'display.prefs.statistics.count' must be either '10', '20', '50', or '100'")
display.prefs.fieldCoverage = validate( match('display.prefs.fieldCoverage', "^(0|.01|.50|.90|1)$"), "Value of argument 'display.prefs.fieldCoverage' must be either '0', '.01', '.50', '.90', or '1'")
display.prefs.enableMetaData = validate( match('display.prefs.enableMetaData', "^(0|1)$"), "Value of argument 'display.prefs.enableMetaData' must be either '0' or '1'")
display.prefs.showDataSummary = validate( match('display.prefs.showDataSummary', "^(0|1)$"), "Value of argument 'display.prefs.showDataSummary' must be either '0' or '1'")
display.prefs.showSPL = validate( match('display.prefs.showSPL', "^(0|1)$"), "Value of argument 'display.prefs.showSPL' must be either '0' or '1")
display.general.enablePreview = validate( match('display.general.enablePreview', "^(0|1)$"), "Value of argument 'display.general.enablePreview' must be either '0' or '1'")
display.events.fields = validate( isstr('display.events.fields'), "Value of argument 'display.events.fields' must be a string")
display.events.type = validate( match('display.events.type', "^(raw|list|table)$"), "Value of argument 'display.events.type' must be either 'raw', 'list', or 'table'")
display.events.rowNumbers = validate( match('display.events.rowNumbers', "^(0|1)$"), "Value of argument 'display.events.rowNumbers' must be either '0' or '1'")
display.events.maxLines = validate( match('display.events.maxLines', "^(0|5|10|20|50|100|200)$"), "Value of argument 'display.events.maxLines' must be either '0', '5', '10', '20', '50', '100', or '200'")
display.events.raw.drilldown = validate( match('display.events.raw.drilldown', "^(inner|outer|full|none)$"), "Value of argument 'display.events.raw.drilldown' must be either 'inner', 'outer', 'full', or 'none'")
display.events.list.drilldown = validate( match('display.events.list.drilldown', "^(inner|outer|full|none)$"), "Value of argument 'display.events.list.drilldown' must be either 'inner', 'outer', 'full', or 'none'")
display.events.list.wrap = validate( match('display.events.list.wrap', "^(0|1)$"), "Value of argument 'display.events.list.wrap' must be either '0' or '1'")
display.events.table.drilldown = validate( match('display.events.table.drilldown', "^(0|1)$"), "Value of argument 'display.events.table.drilldown' must be either '0' or '1'")
display.events.table.wrap = validate( match('display.events.table.wrap', "^(0|1)$"), "Value of argument 'display.events.table.wrap' must be either '0' or '1'")
display.statistics.rowNumbers = validate( match('display.statistics.rowNumbers', "^(0|1)$"), "Value of argument 'display.statistics.rowNumbers' must be either '0' or '1'")
display.statistics.wrap = validate( match('display.statistics.wrap', "^(0|1)$"), "Value of argument 'display.statistics.wrap' must be either '0' or '1'")
display.statistics.drilldown = validate( match('display.statistics.drilldown', "^(row|cell|none)$"), "Value of argument 'display.statistics.drilldown' must be either 'row', 'cell', or 'none'")
display.visualizations.type = validate( match('display.visualizations.type', "^(charting|singlevalue|mapping|custom)$"), "Value of argument 'display.visualizations.type' must be either 'charting' or 'singlevalue', 'mapping' or 'custom'")
display.visualizations.chartHeight = validate( isint('display.visualizations.chartHeight'), "Value of argument 'display.visualizations.chartHeight' must be an integer")
display.visualizations.charting.chart = validate( match('display.visualizations.charting.chart', "^(line|area|column|bar|pie|scatter|bubble|radialGauge|fillerGauge|markerGauge)$"), "Value of argument 'display.visualizations.charting.chart' must be either 'line', 'area', 'column', 'bar', 'pie', 'scatter', 'bubble', 'radialGauge', 'fillerGauge', or 'markerGauge'")
display.visualizations.charting.chart.style = validate( match('display.visualizations.charting.chart.style', "^(minimal|shiny)$"), "Value of argument 'display.visualizations.charting.chart.style' must be either 'minimal' or 'shiny'")
display.visualizations.charting.legend.labelStyle.overflowMode = validate( match('display.visualizations.charting.legend.labelStyle.overflowMode', "^(ellipsisEnd|ellipsisMiddle|ellipsisStart)$"), "Value of argument 'display.visualizations.charting.legend.labelStyle.overflowMode' must be either 'ellipsisEnd', 'ellipsisMiddle', or 'ellipsisStart'")
display.page.search.patterns.sensitivity = validate( isnum('display.page.search.patterns.sensitivity') AND 'display.page.search.patterns.sensitivity'>=0 AND 'display.page.search.patterns.sensitivity'<=1, "Value of argument 'display.page.search.patterns.sensitivity' must be a number between 0 and 1")
display.page.search.mode = validate( match('display.page.search.mode', "^(fast|smart|verbose)$"), "Value of argument 'display.page.search.mode' must be either 'fast', 'smart', or 'verbose'")
display.page.search.timeline.format = validate( match('display.page.search.timeline.format', "^(hidden|compact|full)$"), "Value of argument 'display.page.search.timeline.format' must be either 'hidden', 'compact', or 'full'")
display.page.search.timeline.scale = validate( match('display.page.search.timeline.scale', "^(linear|log)$"), "Value of argument 'display.page.search.timeline.scale' must be either 'linear' or 'log'")
display.page.search.showFields = validate( match('display.page.search.showFields', "^(0|1)$"), "Value of argument 'display.page.search.showFields' must be either '0' or '1'")
display.page.search.searchHistoryTimeFilter = validate( match('display.page.search.searchHistoryTimeFilter', "^(@d|-7d@d|-30d@d|-60d@d|-90d@d)$"), "Value of argument 'display.page.search.searchHistoryTimeFilter' must be either '@d', '-7d@d', '-30d@d', '-60d@d', or '-90d@d'")
display.page.search.searchHistoryCount = validate( match('display.page.search.searchHistoryCount', "^(10|20|50)$"), "Value of argument 'display.page.search.searchHistoryCount' must be either '10', '20', or '50'")
[validation:scheduledviews]
action.email.to = validate( match('action.email.to', "(?i)^(?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})(?:\s*[,;]\s*(?:[^@\s]+@(?:[^@\s]+\.)+[a-z]{2,}))*$"), "One of the email addresses in 'action.email.to' is invalid")
action.email.cc = validate( match('action.email.cc', "(?i)^(?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})(?:\s*[,;]\s*(?:[^@\s]+@(?:[^@\s]+\.)+[a-z]{2,}))*$"), "One of the email addresses in 'action.email.cc' is invalid")
action.email.bcc = validate( match('action.email.bcc', "(?i)^(?:[^@\s]+@(?:[^@\s.]+\.)+[a-z]{2,})(?:\s*[,;]\s*(?:[^@\s]+@(?:[^@\s]+\.)+[a-z]{2,}))*$"), "One of the email addresses in 'action.email.bcc' is invalid")
action.email.priority = validate( match('action.email.priority', "^([1-5])$"), "Value of argument 'action.email.priority' must be either '1', '2', '3', '4', '5'")
[validation:search-concurrency-settings-handler]
total_search_concurrency_limit = validate( match('total_search_concurrency_limit', "auto") OR isint('total_search_concurrency_limit') AND 'total_search_concurrency_limit' >= 1, "Value of argument 'total_search_concurrency_limit' must be 'auto' or a positive integer." )
base_max_searches = validate( isint('base_max_searches') AND 'base_max_searches' >= 1 AND 'base_max_searches' <= 512, "Value of argument 'base_max_searches' must be an integer in the range 1-512." )
max_searches_per_cpu = validate( isint('max_searches_per_cpu') AND 'max_searches_per_cpu' >= 0 AND 'max_searches_per_cpu' <= 16, "Value of argument 'max_searches_per_cpu' must be an integer in the range 0-16." )
max_rt_search_multiplier = validate( isnum('max_rt_search_multiplier') AND 'max_rt_search_multiplier' >= 0 AND 'max_rt_search_multiplier' <= 16, "Value of argument 'max_rt_search_multiplier' must be a floating point number in the range 0-16." )
auto_summary_perc = validate( isint('auto_summary_perc') AND 'auto_summary_perc' >= 0 AND 'auto_summary_perc' <= 100, "Value of argument 'auto_summary_perc' must be an integer in the range 0-100." )
max_searches_perc = validate( isint('max_searches_perc') AND 'max_searches_perc' >= 1 AND 'max_searches_perc' <= 100, "Value of argument 'max_searches_perc' must be an integer in the range 1-100." )
shc_adhoc_quota_enforcement = validate( match('shc_adhoc_quota_enforcement', "^(on|off|overflow)$"), "Value of 'shc_adhoc_quota_enforcement' must be 'on', 'off', or 'overflow'.")
[validation:conf-alert_actions]
reportPaperSize = match('reportPaperSize', "(?i)letter|legal|ledger|a2|a3|a4|a5")
reportPaperOrientation = match('reportPaperOrientation', "(?i)portrait|landscape")
mailserver = validate( match('mailserver', "^(?:([ ]*)?)([a-zA-Z]|[a-zA-Z0-9][a-zA-Z0-9_\\-.]*[a-zA-Z0-9]|[0-9a-fA-F:]*:[0-9a-fA-F:]*:[0-9a-fA-F:]*|\\[[0-9a-fA-F:]*:[0-9a-fA-F:]*:[0-9a-fA-F:]*\\])(:[1-9][0-9]*)?(?:([ ]*)?)$"), "Invalid Mail host")
hostname = validate( match('hostname', "^(?:((https|http)(\:\/\/))?)([a-zA-Z]|[a-zA-Z0-9][a-zA-Z0-9_\\-.]*[a-zA-Z0-9]|[0-9a-fA-F:]*:[0-9a-fA-F:]*:[0-9a-fA-F:]*|\\[[0-9a-fA-F:]*:[0-9a-fA-F:]*:[0-9a-fA-F:]*\\])(:[1-9][0-9]*)?$"), "Invalid Link hostname")
[validation:distsearch-setup]
serverTimeout = isint('serverTimeout') AND 'serverTimeout'>=0
statusTimeout = isint('statusTimeout') AND 'statusTimeout'>=0
connectionTimeout = isint('connectionTimeout') AND 'connectionTimeout'>=0
sendTimeout = isint('sendTimeout') AND 'sendTimeout'>=0
receiveTimeout = isint('receiveTimeout') AND 'receiveTimeout'>=0
checkTimedOutServersFrequency = isint('checkTimedOutServersFrequency') AND 'checkTimedOutServersFrequency'>=0
[restreplayshc]
methods = POST, PUT, DELETE
nodelists = shc
nodes =
filternodes =
[validation:datamodeledit]
name = validate( NOT match('name', "\."), "Dataset name cannot contain '.'")
description = validate( is_json('description'), "Value of argument 'description' must be a valid json")
search = validate( len(trim('search')) > 0, "Value of argument 'search' may not be empty")
dataset.type = validate( match('dataset.type', "^(datamodel|table)$"), "Value of argument 'dataset.type' must be one of {'datamodel','table'}")
dataset.commands = validate( is_json('dataset.commands'), "Value of argument 'dataset.commands' must be a valid json")
dataset.fields = validate( is_json('dataset.fields'), "Value of argument 'dataset.fields' must be a valid json")
dataset.display.diversity = validate( match('dataset.display.diversity', "^(latest|random|diverse|rare)$"), "Value of argument 'dataset.display.diversity' must be one of {'latest, 'random', 'diverse', 'rare'}")
dataset.display.limiting = validate( isnum('dataset.display.limiting'), "Value of argument 'dataset.display.limiting' must be a number")
dataset.display.currentCommand = validate( is_nonneg_int('dataset.display.currentCommand'), "Value of argument 'dataset.display.currentCommand' must be positive integer")
dataset.display.mode = validate( match('dataset.display.mode', "^(table|datasummary)$"), "Value of argument 'dataset.display.mode' must be one of {'table', 'datasummary'}")
dataset.display.datasummary.earliestTime = validate( is_time('dataset.display.datasummary.earliestTime'), "Value of 'dataset.display.datasummary.earliestTime' must be a time string")
dataset.display.datasummary.latestTime = validate( is_time('dataset.display.datasummary.latestTime'), "Value of 'dataset.display.datasummary.latestTime' must be a time string")
[validation:health-report-config]
suppress_status_update_ms = validate( is_nonneg_int('suppress_status_update_ms') AND 'suppress_status_update_ms'<2629746000, "Value of argument 'suppress_status_update_ms' must be a number and less than a month")
full_health_log_interval = validate( is_nonneg_int('full_health_log_interval') AND 'full_health_log_interval'>0, "Value of argument 'full_health_log_interval' must be a positive number.")
alert.disabled = validate( is_bool('alert.disabled'), "Value of 'alert.disabled' must be a boolean")
alert.min_duration_sec = validate( is_nonneg_int('alert.min_duration_sec') AND 'alert.min_duration_sec'<86400000, "Value of argument 'alert.min_duration_sec' must be a number and less than a day")
alert.threshold_color = validate( match('alert.threshold_color', "^(yellow|red)$"), "Value of 'alert.threshold_color' must be either 'yellow' or 'red'")
alert.suppress_period = validate ( match('alert.suppress_period', "^(\d+[hmsd])$"), "Value of argument alert.suppress_period must be of the format <integer>[smhd]")
action.to = validate( match('action.to', "(?i)^((?:[^@\s<>()=]+@(?:[^@\s.<>()=]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}<>()=]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s<>()=]+@(?:[^@\s.<>()=]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}<>()=]+)\})?\$)))*$"), "One of the email addresses in 'Send email alerts to (action.to)' is invalid")
action.cc = validate( match('action.cc', "(?i)^((?:[^@\s<>()=]+@(?:[^@\s.<>()=]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}<>()=]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s<>()=]+@(?:[^@\s.<>()=]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}<>()=]+)\})?\$)))*$"), "One of the email addresses in 'CC (action.cc)' is invalid")
action.bcc = validate( match('action.bcc', "(?i)^((?:[^@\s<>()=]+@(?:[^@\s.<>()=]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}<>()=]+)\})?\$))(?:\s*[,;]\s*((?:[^@\s<>()=]+@(?:[^@\s.<>()=]+\.)+[a-z]{2,})|(\$([\w.*#\- ]+)(?:\{([^}<>()=]+)\})?\$)))*$"), "One of the email addresses in 'BCC (action.bcc)' is invalid")
[validation:localapps-python]
merge-local-meta = validate( is_bool('merge-local-meta'), "Incorrect parameter value for 'merge-local-meta'. Specify one of the following: true/false, t/f, or 0/1.")
exclude-local-meta = validate( is_bool('exclude-local-meta'), "Incorrect parameter value for 'exclude-local-meta'. Specify one of the following: true/false, t/f, or 0/1.")
dest= validate( match('dest', "^(default|local)$"), "Value of argument 'dest' must be either 'default' or 'local'")
# /////////////////////////////////////////////////////////////////////////////
# Specific orchestrator handler settings for SPL2
# /////////////////////////////////////////////////////////////////////////////
[spl2-module-dispatch:spl2-module-dispatch]
match = /search/spl2-module-dispatch
requireAuthentication = true
capability.post = search

Powered by BW's shoe-string budget.