(function(e){function t(t){for(var n,o,l=t[0],s=t[1],d=t[2],u=0,p=[];u<l.length;u++)o=l[u],Object.prototype.hasOwnProperty.call(i,o)&&i[o]&&p.push(i[o][0]),i[o]=0;for(n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n]);c&&c(t);while(p.length)p.shift()();return r.push.apply(r,d||[]),a()}function a(){for(var e,t=0;t<r.length;t++){for(var a=r[t],n=!0,o=1;o<a.length;o++){var l=a[o];0!==i[l]&&(n=!1)}n&&(r.splice(t--,1),e=s(s.s=a[0]))}return e}var n={},o={5:0},i={5:0},r=[];function l(e){return s.p+"js/"+({}[e]||e)+"."+{1:"581031cb",2:"b3643c41",3:"3fae09c0",4:"43508deb",6:"160b27e3",7:"8f68e217",8:"1f2d73e0",9:"52d6bb84",10:"5c9869a5",11:"b532e051",12:"210662ba",13:"4184b5e2",14:"04c959ff",15:"e23e4cb1"}[e]+".js"}function s(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,s),a.l=!0,a.exports}s.e=function(e){var t=[],a={3:1,4:1,6:1,7:1};o[e]?t.push(o[e]):0!==o[e]&&a[e]&&t.push(o[e]=new Promise((function(t,a){for(var n="css/"+({}[e]||e)+"."+{1:"31d6cfe0",2:"31d6cfe0",3:"6ecc6302",4:"ec05f76a",6:"12e7c076",7:"1241beaf",8:"31d6cfe0",9:"31d6cfe0",10:"31d6cfe0",11:"31d6cfe0",12:"31d6cfe0",13:"31d6cfe0",14:"31d6cfe0",15:"31d6cfe0"}[e]+".css",i=s.p+n,r=document.getElementsByTagName("link"),l=0;l<r.length;l++){var d=r[l],u=d.getAttribute("data-href")||d.getAttribute("href");if("stylesheet"===d.rel&&(u===n||u===i))return t()}var p=document.getElementsByTagName("style");for(l=0;l<p.length;l++){d=p[l],u=d.getAttribute("data-href");if(u===n||u===i)return t()}var c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.onload=t,c.onerror=function(t){var n=t&&t.target&&t.target.src||i,r=new Error("Loading CSS chunk "+e+" failed.\n("+n+")");r.code="CSS_CHUNK_LOAD_FAILED",r.request=n,delete o[e],c.parentNode.removeChild(c),a(r)},c.href=i;var h=document.getElementsByTagName("head")[0];h.appendChild(c)})).then((function(){o[e]=0})));var n=i[e];if(0!==n)if(n)t.push(n[2]);else{var r=new Promise((function(t,a){n=i[e]=[t,a]}));t.push(n[2]=r);var d,u=document.createElement("script");u.charset="utf-8",u.timeout=120,s.nc&&u.setAttribute("nonce",s.nc),u.src=l(e);var p=new Error;d=function(t){u.onerror=u.onload=null,clearTimeout(c);var a=i[e];if(0!==a){if(a){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;p.message="Loading chunk "+e+" failed.\n("+n+": "+o+")",p.name="ChunkLoadError",p.type=n,p.request=o,a[1](p)}i[e]=void 0}};var c=setTimeout((function(){d({type:"timeout",target:u})}),12e4);u.onerror=u.onload=d,document.head.appendChild(u)}return Promise.all(t)},s.m=e,s.c=n,s.d=function(e,t,a){s.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},s.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.t=function(e,t){if(1&t&&(e=s(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(s.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)s.d(a,n,function(t){return e[t]}.bind(null,n));return a},s.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return s.d(t,"a",t),t},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.p="",s.oe=function(e){throw console.error(e),e};var d=window["webpackJsonp"]=window["webpackJsonp"]||[],u=d.push.bind(d);d.push=t,d=d.slice();for(var p=0;p<d.length;p++)t(d[p]);var c=u;r.push([0,0]),a()})({0:function(e,t,a){e.exports=a("2f39")},"2f39":function(e,t,a){"use strict";a.r(t);var n={};a.r(n),a.d(n,"openCollectors",(function(){return T})),a.d(n,"pipelines",(function(){return S})),a.d(n,"shippersUrls",(function(){return C})),a.d(n,"openCollectorLogSources",(function(){return A}));var o={};a.r(o),a.d(o,"addOpenCollector",(function(){return I})),a.d(o,"updateOpenCollector",(function(){return P})),a.d(o,"deleteOpenCollector",(function(){return x})),a.d(o,"getOpenCollectors",(function(){return D})),a.d(o,"addPipeline",(function(){return O})),a.d(o,"updatePipeline",(function(){return E})),a.d(o,"deletePipeline",(function(){return L})),a.d(o,"getPipelines",(function(){return k})),a.d(o,"updateJwtToken",(function(){return N})),a.d(o,"loadShippersUrls",(function(){return B})),a.d(o,"getOpenCollectorLogSources",(function(){return F}));var i={};a.r(i),a.d(i,"signIn",(function(){return H})),a.d(i,"signOut",(function(){return z})),a.d(i,"forgetOpenCollectors",(function(){return Z})),a.d(i,"getOpenCollectors",(function(){return G})),a.d(i,"upsertOpenCollector",(function(){return W})),a.d(i,"deleteOpenCollector",(function(){return J})),a.d(i,"getOpenCollectorsOcVersion",(function(){return $})),a.d(i,"getOpenCollectorsOsVersion",(function(){return K})),a.d(i,"getOpenCollectorsFilebeatVersion",(function(){return X})),a.d(i,"getOpenCollectorsjsBeatVersion",(function(){return Y})),a.d(i,"getOpenCollectorsOcAndActiveBeatsVersion",(function(){return Q})),a.d(i,"forgetPipelines",(function(){return ee})),a.d(i,"getPipelines",(function(){return te})),a.d(i,"upsertPipeline",(function(){return ae})),a.d(i,"deletePipeline",(function(){return ne})),a.d(i,"loadShippersUrls",(function(){return oe})),a.d(i,"forgetOpenCollectorLogSources",(function(){return ie})),a.d(i,"getOpenCollectorLogSources",(function(){return re})),a.d(i,"deleteDeployment",(function(){return le})),a.d(i,"callDeploymentStepApi",(function(){return se})),a.d(i,"obfuscateSecretForOpenCollector",(function(){return de})),a.d(i,"getDataFromSite",(function(){return ue})),a.d(i,"postDataToSite",(function(){return pe}));a("ac1f"),a("5319"),a("7d6e"),a("e54f"),a("985d"),a("31cd"),a("a1e8");var r=a("2b0e"),l=a("1f91"),s=a("42d2"),d=a("b05d"),u=a("436b"),p=a("2a19");r["a"].use(d["a"],{config:{},lang:l["a"],iconSet:s["a"],plugins:{Dialog:u["a"],Notify:p["a"]}});var c=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"q-app"}},[a("router-view")],1)},h=[],m={name:"App",mounted(){let e=localStorage.getItem("settings.darkMode");void 0!==e&&"string"===typeof e&&"true"===e.toLowerCase()&&(e=!0),void 0===e&&(e=!0),!0!==e&&(e=!1),this.$q.dark.set(e)}},f=m,g=a("2877"),b=Object(g["a"])(f,c,h,!1,null,null,null),_=b.exports,y=a("2f62"),v=function(){return{loggedInUser:"tmasse",jwtToken:"",openCollectors:[],pipelines:[],logSamples:[{pipelineUid:"",logs:[]}],jqFilterTemplate:'# -------------------------------------------\n# THIS TRANSFORM WAS AUTOMATICALLY GENERATED.\n# ANY MANUAL MODIFICATION WILL BE LOST.\n# -------------------------------------------\n# Generated on: {{EZ_generation_timestamp}}\n# By: {{EZ_generation_user}}\n# For Stream: {{EZ_stream_name_placeholder}}\n# UID: {{EZ_stream_id_placeholder}}\n# -------------------------------------------\n\n# is_matching checks if the data matches the {{EZ_stream_name_placeholder}} criteria\ndef is_matching:\n    ."@metadata".beat == "{{EZ_beat_name_placeholder}}"\n    and\n    (\n      .fields.stream_id == "{{EZ_stream_id_placeholder}}"\n      or\n      .fields.stream_name == "{{EZ_stream_name_placeholder}}"\n      or\n      .device_type == "{{EZ_stream_name_placeholder}}"\n    )\n;\n   ',jqTransformTemplate:'# -------------------------------------------\n# THIS TRANSFORM WAS AUTOMATICALLY GENERATED.\n# ANY MANUAL MODIFICATION WILL BE LOST.\n# -------------------------------------------\n# Generated on: {{EZ_generation_timestamp}}\n# By: {{EZ_generation_user}}\n# For Stream: {{EZ_stream_name_placeholder}}\n# UID: {{EZ_stream_id_placeholder}}\n# -------------------------------------------\n\n# -----------------\n# UTILITY FUNCTIONS\n# -----------------\n\n# flatten_array will flatten or fan out the pipeline, returning n values\n#  where n is the number of array records in the log message. If there are no records\n#  the input is returned unchanged\ndef flatten_array($log_msg_field):\n    if $log_msg_field then\n        if ($log_msg_field | length) > 0 then\n            # flatten our records into one message each\n            $log_msg_field[]\n        else\n            .\n        end\n    else\n        .\n    end\n;\n\n# add_field adds a key-value pair to the metadata objects generated by get_io_format\n# Takes an input and output filter as parameters\n# Capable of adding data to any of the objects in the metadata JSON (input, output, subrule, transform_path, etc)\n# This function should be used for adding all metadata to your output - It scrubs illegal characters like | and \n\n# Example function call: add_field(.input.field1; .output.subject)\ndef add_field($input_field; output_field):\n\n    #Check for pipe character\n    ($input_field | tojson) as $input_field_string\n    \n    (($input_field_string | contains("|")) or ($input_field_string | contains("\\n")) | not ) as $nobadchars\n\n    if\n        $input_field and $nobadchars\n    then\n        output_field = $input_field\n    elif \n        $input_field and ($nobadchars | not)\n    then\n        #remove pipes and newline characters from input_field\n        ($input_field_string | split("|") | join("-")) as $input_field_nopipes |\n        ($input_field_nopipes | split("\\n") | join(" ")) as $input_field_nobadchars |\n        output_field = ($input_field_nobadchars | fromjson)\n    else\n        .\n    end\n;\n\n# -----------------\n# DATA TRANSFORM\n# -----------------\n\n# get_io_format converts incoming data to a standard IO format. The original\n#   content is added to the output in the "original_message" field automatically.\ndef get_io_format:\n    {\n        "input": .,\n#        "message": .message | fromjson,\n{{EZ_flatten_array_placeholder}}\n        "output": {\n            "original_message": {{EZ_original_message_placeholder}}\n        }\n    }\n;\n\n# transform will normalize the incoming log into the LogRhythm Schema\n#   that can then be forwarded to the SIEM\ndef transform:\n    # First, convert to IO format.\n    get_io_format |\n\n    # "beatname" is a required field for Open Collector Regex to work in the SIEM.\n    # We add here more details to help the Log Source Virtualisation\n\n    add_field(.input."@metadata".beat; .output.beatname) | # For the Log Source Virtualisation\n    add_field("{{EZ_compact_stream_name_placeholder}}"; .output.device_type) | # For the Log Source Virtualisation\n    add_field("{{EZ_stream_id_placeholder}}"; .output.stream_id) | # For the Log Source Virtualisation (optional)\n    add_field("{{EZ_stream_name_placeholder}}"; .output.stream_name) |\n\n    # If required, the Timestamp field(s)\n\n{{EZ_timestamp__add_field_placeholder}}\n\n    # If required, the Fanned out fields\n\n{{EZ_flatten_array__add_field_placeholder}}\n\n    # The rest of the Fields mapping\n\n{{EZ_add_field_placeholder}}\n\n    # For the Sub Rules\n\n{{EZ_sub_rules__add_field_placeholder}}\n\n    # this filter produces the output object, for sending to SYSLOG output\n    # This filter should be left in place in most cases\n    .output\n;\n',shippersUrlsInternal:[],collectionMethodTemplates:[{shipper:"jsBeat",collectionMethod:"flatFile",definition:[{name:"baseDirectoryPath",label:"Full Base directory path",type:{name:"string"},default:"",description:"Full Base directory path to crawl to find the files matching `Inclusion Filter`.\n::: danger\nMust be non-empty.\n:::\n\n::: tip Examples\nTo collect files under the directory `/var/log/myApp/`, one can use either of the following notations with the same effect:\n- `/var/log/myApp`\n- `/var/log/myApp/`\n\nMore specific examples:\n\n| I want to collect | `Full Base directory path` | `Inclusion Filter` | `Recursion Depth` |\n|-------------------|------------------------------|----------------------|:-------------------:|\n| `/var/log/messages` | `/var/log` | `messages` | `0` |\n| `/var/log/myApp.log` | `/var/log` | `myApp.log` | `0` |\n| `/var/log/myApp/*log` | `/var/log/myApp` | `*.log` | `0` |\n| - `/var/log/myApp/January/*.log`<br>- `/var/log/myApp/February/*.log`<br>- `/var/log/myApp/March/*.log`<br>- *etc...*<br>In other words:<br>`/var/log/myApp/*/*.log` | `/var/log/myApp` | `*.log` | `1` |\n| - `/var/log/Snap!/1992/01/01/Log.RhythmIsADancer.log`<br>- `/var/log/snap/1992/05/24/Log.RhythmIsADancer.log`<br>- *etc...*<br>In other words:<br>`/var/log/snap/*/*/*/Log.RhythmIsADancer.log` | `/var/log/snap` | `Log.RhythmIsADancer.log` | `3` |\n:::",required:!0,group:"Required"},{name:"inclusionFilter",label:"Inclusion Filter",type:{name:"string"},default:"",description:"If prefixed with `Regex::` then regex filter, otherwise file system type filter.\n::: danger\nMust be non-empty.\n:::\n\n::: tip Examples\n- `myLogFile`\n- `myLogFile.log`\n- `myLogFile-Audit.log`\n- `myLogFile-Audit-*.log`\n- `Regex::myLogFile-Audit-\\d+\\.log`\n:::",required:!0,group:"Required"},{name:"exclusionFilter",label:"Exclusion Filter",type:{name:"string"},default:"",description:"If prefixed with `Regex::` then regex filter, otherwise file system type filter.",required:!1,group:"Advanced"},{name:"recursionDepth",label:"Recursion Depth",type:{name:"number"},default:"0",min:0,max:100,description:"Maximum number of sub-directory to crawl into.\n0 means means that the crawler will not visit any of the sub-directory, if any, of `Full Base directory path`",required:!1,group:"Advanced"},{name:"daysToWatchModifiedFiles",label:"Days to Watch Modified Files",type:{name:"number"},default:"0",min:0,max:1096,description:"Stop checking for update/growth files older than X days old.\n0 means `Days to Watch Modified Files` is disabled (all files will be checked)",required:!1,group:"Advanced"},{name:"multiLines",label:"Multi Lines",type:{name:"object",of:{type:{name:"string"},default:"",description:"",required:!0}},description:"Multi lines message identification.\n- `msgStartRegex`: Inclusive Regex to match the beginning of a new message.\n- `msgStopRegex`: Inclusive Regex to match the end of a message.\n- `msgDelimiterRegex`: Excluding Regex to separate two messages.\n::: tip\nFor single line log messages (messages where the whole log including the timestamp are on the same line), there is no need to specify anything. If nothing is provided, the `End Of Line` sequence will be used to split the log messages.\n\nFor multi-lines log messages (messages which spill on several consecutive lines, sharing one timestamp), you can specify one or many of these filters but are not required to specify all of them.\n:::\n",required:!1,group:"Advanced"},{name:"collectFromBeginning",label:"Collect from the beginning",type:{name:"boolean"},description:"If set to true, the first collection cycle will collect from the beginning. Otherwise, the first cycle only collect file size and update the State.\nThis setting only affect the very first Collection Cycle. Any subsequent Collection Cycle will collet any new file from the beginning.",default:!1,required:!1,group:"Advanced"},{name:"compressionType",label:"Compression Type",type:{name:"option"},options:[{value:"none",label:"No compression"},{value:"gzip",label:"gzip"},{value:"tar",label:"tar"},{value:"targzip",label:"targzip"},{value:"zip",label:"zip"}],default:"none",description:"The compression method used to decompress the files. \n::: danger\n__NOT IMPLEMENTED__\n:::\n\n::: tip\nNote: This does __not__ affect the `includeFilter`. Only the way to handle the content of the file.\n:::",required:!1,group:"Advanced"},{name:"frequency_in_seconds",label:"Cycle Frequency (seconds)",type:{name:"number"},default:30,min:1,max:3600,description:"Collect cycle frequency.\nDefault to 30 seconds if not provided or below 1.\n::: tip\nWe recommend to set this value to 10 seconds or more.\n:::\nThe default setting is 30 Seconds.",required:!1,group:"Advanced"},{name:"active",label:"Active",type:{name:"boolean"},default:!0,description:"Is this Collection Method active?",required:!0,readonly:!0,group:"EZ Internal"},{name:"deviceType",label:"Device Type",type:{name:"string"},default:"",description:"The name of the Device Type, to pass onto the Open Collector Pipeline for the Log Source Virtualisation to work.\n::: tip\nThe Log Source Virtualisation will expect it to be the same as the Pipeline name, but with all the non alphanumerical characters replaced by an underscore.\nFor example:\n- `my log source` :arrow_right: `my_log_source`\n- `my - log source` :arrow_right: `my___log_source`\n- `my-log/185\\source` :arrow_right: `my_log_185_source`\n\nFYI: This is how the JQ Pipeline Transform would normaly create it too.\n:::\n\n::: danger\nModifying the value provided by default here is very likely to break the Log Source Virtualisation later, as both __MUST__ match.\n:::\n\n::: tip\nLong story short, don't touch this *(unless you really know what you are doing)*.\n:::",required:!0,group:"EZ Internal"},{name:"filterHelpers",label:"Identification Filters",type:{name:"object",of:{type:{name:"string"},default:"",description:"",required:!0}},description:"In addition to `stream_id` and `stream_name` Identification Filters that are automatically added, and cannot be removed or changed, you can add optional Identification Filters that can then be used to filter in the JQ Filter.\nUsers should not need to modify these",required:!0,group:"EZ Internal"}]},{shipper:"filebeat",collectionMethod:"log",definition:[{name:"paths",label:"File Paths",type:{name:"array",of:{type:{name:"string"},quotes:{required:!0,options:[{value:"'",label:"Single quote: '"},{value:'"',label:'Double quote: "'}],default:'"'},default:"",description:"A single glob-based path that will be crawled and fetched. For example: `/path/to/file.log`",required:!0}},description:"A list of glob-based paths that will be crawled and fetched. All patterns supported by Go Glob are also supported here. \nFor example, to fetch all files from a predefined level of subdirectories, the following pattern can be used: `/var/log/*/*.log`. This fetches all `.log` files from the subfolders of `/var/log`. It does not fetch log files from the `/var/log` folder itself.\n> It is possible to recursively fetch all files in all subdirectories of a directory using the optional `Recursive Glob` settings under **Advanced**.",required:!0,group:"Required"},{name:"encoding",label:"Text encoding",type:{name:"option"},options:[{value:null,label:"** Not specified **<hr>"},{value:"plain",label:"Plain ASCII encoding"},{value:"utf-8",label:"UTF-8 encoding"},{value:"gbk",label:"simplified Chinese charaters"},{value:"iso8859-6e",label:"ISO8859-6E, Latin/Arabic"},{value:"iso8859-6i",label:"ISO8859-6I, Latin/Arabic"},{value:"iso8859-8e",label:"ISO8859-8E, Latin/Hebrew"},{value:"iso8859-8i",label:"ISO8859-8I, Latin/Hebrew"},{value:"iso8859-1",label:"ISO8859-1, Latin-1"},{value:"iso8859-2",label:"ISO8859-2, Latin-2"},{value:"iso8859-3",label:"ISO8859-3, Latin-3"},{value:"iso8859-4",label:"ISO8859-4, Latin-4"},{value:"iso8859-5",label:"ISO8859-5, Latin/Cyrillic"},{value:"iso8859-6",label:"ISO8859-6, Latin/Arabic"},{value:"iso8859-7",label:"ISO8859-7, Latin/Greek"},{value:"iso8859-8",label:"ISO8859-8, Latin/Hebrew"},{value:"iso8859-9",label:"ISO8859-9, Latin-5"},{value:"iso8859-10",label:"ISO8859-10, Latin-6"},{value:"iso8859-13",label:"ISO8859-13, Latin-7"},{value:"iso8859-14",label:"ISO8859-14, Latin-8"},{value:"iso8859-15",label:"ISO8859-15, Latin-9"},{value:"iso8859-16",label:"ISO8859-16, Latin-10"},{value:"cp437",label:"IBM CodePage 437"},{value:"cp850",label:"IBM CodePage 850"},{value:"cp852",label:"IBM CodePage 852"},{value:"cp855",label:"IBM CodePage 855"},{value:"cp858",label:"IBM CodePage 858"},{value:"cp860",label:"IBM CodePage 860"},{value:"cp862",label:"IBM CodePage 862"},{value:"cp863",label:"IBM CodePage 863"},{value:"cp865",label:"IBM CodePage 865"},{value:"cp866",label:"IBM CodePage 866"},{value:"ebcdic-037",label:"IBM CodePage 037"},{value:"ebcdic-1040",label:"IBM CodePage 1140"},{value:"ebcdic-1047",label:"IBM CodePage 1047"},{value:"koi8r",label:"KOI8-R, Russian (Cyrillic)"},{value:"koi8u",label:"KOI8-U, Ukranian (Cyrillic)"},{value:"macintosh",label:"Macintosh encoding"},{value:"macintosh-cyrillic",label:"Macintosh Cyrillic encoding"},{value:"windows1250",label:"Windows1250, Central and Eastern European"},{value:"windows1251",label:"Windows1251, Russian, Serbian (Cyrillic)"},{value:"windows1252",label:"Windows1252, Legacy"},{value:"windows1253",label:"Windows1253, Modern Greek"},{value:"windows1254",label:"Windows1254, Turkish"},{value:"windows1255",label:"Windows1255, Hebrew"},{value:"windows1256",label:"Windows1256, Arabic"},{value:"windows1257",label:"Windows1257, Estonian, Latvian, Lithuanian"},{value:"windows1258",label:"Windows1258, Vietnamese"},{value:"windows874",label:"Windows874, ISO/IEC 8859-11, Latin/Thai"},{value:"utf-16-bom",label:"UTF-16 with required BOM"},{value:"utf-16be-bom",label:"big endian UTF-16 with required BOM"},{value:"utf-16le-bom",label:"little endian UTF-16 with required BOM"}],default:"utf-8",description:"The file encoding to use for reading data that contains international characters. \n> NOTE\n> The plain encoding is special, because it does not validate or transform any input.",required:!1,group:"Advanced"},{name:"recursive_glob.enabled",label:"Recursive Glob",type:{name:"boolean"},default:!0,description:"Is this Recursive Glob enabled?\nEnable expanding `** ` into recursive glob patterns. With this feature enabled,\nthe rightmost `** ` in each path is expanded into a fixed number of glob\npatterns. For example: `/ foo/**` expands to `/foo`, `/foo/*`, `/foo/*/ * `, and so\non. If enabled it expands a single `** ` into a 8-level deep ` *` pattern.",required:!1,group:"Advanced"},{name:"include_lines",label:"Include Lines",type:{name:"array",of:{type:{name:"regex"},quotes:{required:!0,options:[{value:"'",label:"Single quote: '"},{value:'"',label:'Double quote: "'}],default:"'"},default:"",required:!1}},description:"A list of regular expressions to match the lines that you want Filebeat to include. Filebeat exports only the lines that match a regular expression in the list. By default, all lines are exported. Empty lines are ignored.\nIf multiline settings also specified, each multiline message is combined into a single line before the lines are filtered by `Include Lines`.\n> NOTE\n> If both `Include Lines` and `Exclude Lines` are defined, Filebeat executes `Include Lines` first and then executes `Exclude Lines`. The order in which the two options are defined doesn’t matter.",required:!1,group:"Advanced"},{name:"exclude_lines",label:"Exclude Lines",type:{name:"array",of:{type:{name:"regex"},quotes:{required:!0,options:[{value:"'",label:"Single quote: '"},{value:'"',label:'Double quote: "'}],default:"'"},default:"",required:!1}},description:"A list of regular expressions to match the lines that you want Filebeat to exclude. Filebeat drops any lines that match a regular expression in the list. By default, no lines are dropped. Empty lines are ignored.\nIf multiline settings are also specified, each multiline message is combined into a single line before the lines are filtered by `Exclude Lines`.\n> NOTE\n> If both `Include Lines` and `Exclude Lines` are defined, Filebeat executes `Include Lines` first and then executes `Exclude Lines`. The order in which the two options are defined doesn’t matter.",required:!1,group:"Advanced"},{name:"exclude_files",label:"Exclude Files",type:{name:"array",of:{type:{name:"regex"},quotes:{required:!0,options:[{value:"'",label:"Single quote: '"},{value:'"',label:'Double quote: "'}],default:"'"},default:"",required:!1}},description:"A list of regular expressions to match the files that you want Filebeat to ignore. By default no files are excluded.",required:!1,group:"Advanced"},{name:"ignore_older",label:"Ignore Older",type:{name:"number"},suffix:{required:!0,options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"h"},default:"0",min:0,max:3600,description:"If this option is enabled, Filebeat ignores any files that were modified before the specified timespan. \nConfiguring `Ignore Older` can be especially useful if you keep log files for a long time. For example, if you want to start Filebeat, but only want to send the newest files and files from last week, you can configure this option.\nYou can use time like 2 hours and 5 minutes. The default is 0, which disables the setting. Excluding out the config has the same effect as setting it to 0.\n::: danger\nYou must set `Ignore Older` to be greater than `Close Inactive`.\n:::",required:!1,group:"Advanced"},{name:"close_inactive",label:"Close Inactive",type:{name:"number"},suffix:{required:!0,options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"m"},default:"5m",min:0,max:3600,description:"When this option is enabled, Filebeat closes the file handle if a file has not been harvested for the specified duration.\n> NOTE\n> The counter for the defined period starts when the last log line was read by the harvester. It is not based on the modification time of the file. If the closed file changes again, a new harvester is started and the latest changes will be picked up after `Scan Frequency` has elapsed.\n\n::: tip\nWe recommended that you set `Close Inactive` to a value that is larger than the least frequent updates to your log files. For example, if your log files get updated every few seconds, you can safely set `Close Inactive` to 1 Minute. If there are log files with very different update rates, you can use multiple configurations with different values. Setting `Close Inactive` to a lower value means that file handles are closed sooner. However this has the side effect that new log lines are not sent in near real time if the harvester is closed. The timestamp for closing a file does not depend on the modification time of the file. Instead, Filebeat uses an internal timestamp that reflects when the file was last harvested.\nFor example, if `Close Inactive` is set to 5 minutes, the countdown for the 5 minutes starts after the harvester reads the last line of the file.\n:::\n\nYou can use time like 2 hours and 5 minutes. The default is 5 minutes.\n\n::: warning\nOnly use this option if you understand that data loss is a potential side effect.\n:::",required:!1,group:"Advanced"},{name:"scan_frequency",label:"Scan Frequency",type:{name:"number"},suffix:{required:!0,options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"s"},default:10,min:1,max:3600,description:"How often Filebeat checks for new files in the paths that are specified for harvesting. For example, if you specify a glob like `/var/log/*`, the directory is scanned for files using the frequency specified by `Scan Frequency`. Specify 1 second to scan the directory as frequently as possible without causing Filebeat to scan too frequently.\n::: tip\nWe do not recommend to set this value < 1 second. If you require log lines to be sent in near real time do not use a very low `Scan Frequency` but adjust `Close Inactive` so the file handler stays open and constantly polls your files.\n:::\nThe default setting is 10 Seconds.",required:!1,group:"Advanced"},{name:"max_bytes",label:"Max Bytes",type:{name:"number"},default:"10485760",min:0,max:52428800,description:"The maximum number of bytes that a single log message can have. All bytes after `Max Bytes` are discarded and not sent. This setting is especially useful for multiline log messages, which can get large. The default is 10MB (10,485,760 Bytes).",required:!1,group:"Advanced"},{name:"keep_null",label:"Keep Null",type:{name:"boolean"},description:"If this option is set to true, fields with null values will be published in the output document. By default, `Keep Null` is set to false.",default:!1,required:!1,group:"Advanced"},{name:"enabled",label:"Enabled",type:{name:"boolean"},default:!0,description:"Is this Collection Method enabled?",required:!0,readonly:!0,group:"EZ Internal"},{name:"fields",label:"Identification Fields",type:{name:"object",of:{type:{name:"string"},default:"",description:"",required:!0}},description:"In addition to `stream_id` and `stream_name` fields that are automatically added, and cannot be removed or changed, you can add optional fields that you can specify to add additional information to the output.\nFor example, you might add fields that you can use for filtering log data.\nFields can be scalar values, arrays, dictionaries, or any nested combination of these.\nBy default, the fields that you specify here will be grouped under a fields sub-dictionary in the output document.\nTo store the custom fields as top-level fields, set the `fields_under_root option` to true. If a duplicate field is declared in the general configuration, then its value will be overwritten by the value declared here.",required:!0,group:"EZ Internal"}]},{shipper:"filebeat",collectionMethod:"syslog_udp",definition:[{name:"protocol.udp.host",label:"UDP - Binding address and port",type:{name:"string"},description:"Host name/IP and port onto which bind Syslog over UDP",default:"0.0.0.0:514",required:!0,group:"Required"},{name:"protocol.udp.max_message_size",label:"Syslog over UDP - Maximum Message Size",type:{name:"number"},suffix:{options:[{value:"KiB",label:"Kilo Bytes"},{value:"MiB",label:"Mega Bytes"}],default:"MiB"},default:"20MiB",min:1,max:50,description:"The maximum size of the message received over UDP. The default is 20 MegaBytes.",required:!1,group:"Advanced - Syslog over UDP"},{name:"protocol.udp.read_buffer",label:"Syslog over UDP - Read Buffer",type:{name:"number"},suffix:{options:[{value:"KiB",label:"Kilo Bytes"},{value:"MiB",label:"Mega Bytes"}],default:"MiB"},min:1,max:250,default:50,description:"The size of the read buffer on the UDP socket.",required:!1,group:"Advanced - Syslog over UDP"},{name:"protocol.udp.timeout",label:"Syslog over UDP - Timeout",type:{name:"number"},suffix:{options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"s"},min:10,max:3600,default:"300s",description:"The number of seconds of inactivity before a remote connection is closed. The default is 300 seconds.",required:!1,group:"Advanced - Syslog over UDP"},{name:"protocol.udp",label:"SSL for Syslog over UDP - Extra parameters",type:{name:"object",of:{type:{name:"string"},default:""}},description:"",required:!1,group:"Advanced - Miscellaneous"},{name:"keep_null",label:"Keep Null",type:{name:"boolean"},description:"If this option is set to true, fields with null values will be published in the output document. By default, `Keep Null` is set to false.",default:!1,required:!1,group:"Advanced - Miscellaneous"},{name:"enabled",label:"Enabled",type:{name:"boolean"},default:!0,description:"Is this Collection Method enabled?",required:!0,readonly:!0,group:"EZ Internal"},{name:"fields",label:"Identification Fields",type:{name:"object",of:{type:{name:"string"},default:"",description:"",required:!0}},description:"In addition to `stream_id` and `stream_name` fields that are automatically added, and cannot be removed or changed, you can add optional fields that you can specify to add additional information to the output.\nFor example, you might add fields that you can use for filtering log data.\nFields can be scalar values, arrays, dictionaries, or any nested combination of these.\nBy default, the fields that you specify here will be grouped under a fields sub-dictionary in the output document.\nTo store the custom fields as top-level fields, set the `fields_under_root option` to true. If a duplicate field is declared in the general configuration, then its value will be overwritten by the value declared here.",required:!0,group:"EZ Internal"}]},{shipper:"filebeat",collectionMethod:"syslog_tcp",definition:[{name:"protocol.tcp.host",label:"TCP - Binding address and port",type:{name:"string"},description:"Host name/IP and port onto which bind Syslog over TCP",default:"0.0.0.0:514",required:!0,group:"Required"},{name:"protocol.tcp.ssl.enabled",label:"Enabled",type:{name:"boolean"},default:!1,description:"Is Syslog SSL enabled?",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.certificate_authorities",label:"SSL Certificate Authorities",type:{name:"string"},default:"",description:"Path to the file with the list of root certificates for client verifications is only required if `Client Authentication` is configured. If `Certificate Authorities` is empty or not set, and `Client Authentication` is configured, the system keystore is used. If `Certificate Authorities` is self-signed, the host system needs to trust that CA cert as well.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.certificate",label:"SSL Certificate",type:{name:"string"},default:"",description:"For server authentication, the path to the SSL authentication certificate must be specified for TLS. If the certificate is not specified, startup will fail. When this option is configured, the key option is also required.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.key",label:"SSL Key",type:{name:"string"},default:"",description:"The server certificate key used for authentication is required.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.key_passphrase",label:"Pass phrase for SSL Key",type:{name:"password"},default:"",description:"The passphrase is used to decrypt an encrypted key stored in the configured key file.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.verification_mode",label:"Verification Mode",type:{name:"option"},options:[{value:"full",label:"Full: Verifies that the provided certificate is signed by a trusted authority (CA) and also verifies that the server’s hostname (or IP address) matches the names identified within the certificate."},{value:"strict",label:"Strict: Verifies that the provided certificate is signed by a trusted authority (CA) and also verifies that the server’s hostname (or IP address) matches the names identified within the certificate.If the Subject Alternative Name is empty, it returns an error."},{value:"certificate",label:"Certificate: Verifies that the provided certificate is signed by a trusted authority (CA), but does not perform any hostname verification."},{value:"none",label:"None: Performs no verification of the server’s certificate.This mode disables many of the security benefits of SSL/ TLS and should only be used after cautious consideration.It is primarily intended as a temporary diagnostic mechanism when attempting to resolve TLS errors; its use in production environments is strongly discouraged."}],default:"full",description:"Controls the verification of client certificates. The default value is `Full`.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.client_authentication",label:"Client Authentication",type:{name:"option"},options:[{value:"none",label:"None: Disables client authentication."},{value:"optional",label:"Optional: When a client certificate is supplied, the server will verify it."},{value:"required",label:"Required: Will require clients to provide a valid certificate."}],default:"none",description:"The type of client authentication mode. When `SSL Certificate Authorities` is set, it defaults to `Required`. Otherwise, it defaults to `None`.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.renegotiation",label:"Renegotiation",type:{name:"option"},options:[{value:"never",label:"Never: Disables renegotiation."},{value:"once",label:"Once: Allows a remote server to request renegotiation once per connection."},{value:"freely",label:"Freely: Allows a remote server to request renegotiation repeatedly."}],default:"never",description:"This configures what types of TLS renegotiation are supported. The default value is `Never`.",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.ssl.supported_protocols",label:"Supported Protocols",type:{name:"array",of:{type:{name:"string"},default:"",required:!1}},description:"List of allowed SSL/TLS versions. If SSL/TLS server decides for protocol versions not configured, the connection will be dropped during or after the handshake. The setting is a list of allowed protocol versions: SSLv3, TLSv1 for TLS version 1.0, TLSv1.0, TLSv1.1, TLSv1.2, and TLSv1.3. The default value is [TLSv1.1, TLSv1.2, TLSv1.3].",required:!1,group:"SSL Configuration"},{name:"protocol.tcp.max_message_size",label:"Syslog over TCP - Maximum Message Size",type:{name:"number"},suffix:{options:[{value:"KiB",label:"Kilo Bytes"},{value:"MiB",label:"Mega Bytes"}],default:"MiB"},default:"20MiB",min:1,max:50,description:"The maximum size of the message received over TCP. The default is 20 MegaBytes.",required:!1,group:"Advanced - Syslog over TCP"},{name:"protocol.tcp.framing",label:"Syslog over TCP - Framing",type:{name:"option"},options:[{value:"delimiter",label:"Delimiter: Uses the characters specified in Line Delimiter to split the incoming events."},{value:"rfc6587",label:"RFC6587: supports octet counting and non-transparent framing as described in RFC6587. Line Delimiter is used to split the events in non-transparent framing."}],default:"delimiter",description:"Specify the framing used to split incoming events. The default is `Delimiter`.",required:!1,group:"Advanced - Syslog over TCP"},{name:"protocol.tcp.line_delimiter",label:"Syslog over TCP - Line Delimiter",type:{name:"string"},default:"\\n",description:"Specify the characters used to split the incoming events. The default is \\n.",required:!1,group:"Advanced - Syslog over TCP"},{name:"protocol.tcp.max_connections",label:"Syslog over TCP - Maximum Connections",type:{name:"number"},min:1,max:250,default:50,description:"The at most number of connections to accept at any given point in time.",required:!1,group:"Advanced - Syslog over TCP"},{name:"protocol.tcp.timeout",label:"Syslog over TCP - Timeout",type:{name:"number"},suffix:{options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"s"},min:10,max:3600,default:"300s",description:"The number of seconds of inactivity before a remote connection is closed. The default is 300 seconds.",required:!1,group:"Advanced - Syslog over TCP"},{name:"protocol.tcp.ssl",label:"SSL for Syslog over TCP - Extra parameters",type:{name:"object",of:{type:{name:"string"},default:""}},description:"Extra parameters you might want to add to the SSL Configuration",required:!1,group:"Advanced - Miscellaneous"},{name:"protocol.tcp",label:"SSL for Syslog over TCP - Extra parameters",type:{name:"object",of:{type:{name:"string"},default:""}},description:"",required:!1,group:"Advanced - Miscellaneous"},{name:"keep_null",label:"Keep Null",type:{name:"boolean"},description:"If this option is set to true, fields with null values will be published in the output document. By default, `Keep Null` is set to false.",default:!1,required:!1,group:"Advanced - Miscellaneous"},{name:"enabled",label:"Enabled",type:{name:"boolean"},default:!0,description:"Is this Collection Method enabled?",required:!0,readonly:!0,group:"EZ Internal"},{name:"fields",label:"Identification Fields",type:{name:"object",of:{type:{name:"string"},default:"",description:"",required:!0}},description:"In addition to `stream_id` and `stream_name` fields that are automatically added, and cannot be removed or changed, you can add optional fields that you can specify to add additional information to the output.\nFor example, you might add fields that you can use for filtering log data.\nFields can be scalar values, arrays, dictionaries, or any nested combination of these.\nBy default, the fields that you specify here will be grouped under a fields sub-dictionary in the output document.\nTo store the custom fields as top-level fields, set the `fields_under_root option` to true. If a duplicate field is declared in the general configuration, then its value will be overwritten by the value declared here.",required:!0,group:"EZ Internal"}]},{shipper:"filebeat",collectionMethod:"httpjson",definition:[{name:"request.url",label:"Request URL",type:{name:"string"},description:"The URL of the HTTP API.",default:"",required:!0,group:"Required"},{name:"request.method",label:"Request Method",type:{name:"option"},options:[{value:"GET",label:"HTTP GET"},{value:"POST",label:"HTTP POST"}],description:"HTTP method to use when making requests. Default: `GET`.",default:"GET",required:!1,group:"Required"},{name:"EZ__Auth_Basic__enable",label:"Enable",type:{name:"boolean"},description:"Using Basic authentication?",default:!1,required:!0,group:"Authentication - Basic"},{name:"EZ__Auth_Basic__username",label:"Username",type:{name:"string"},description:"Username for Basic authentication. It will be URL-encoded automatically with its password.",default:"",required:!0,group:"Authentication - Basic"},{name:"EZ__Auth_Basic__password",label:"Password",type:{name:"password"},description:"Password for Basic authentication. It will be URL-encoded automatically with its username.",default:"",required:!0,group:"Authentication - Basic"},{name:"auth.oauth2.enabled",label:"Enabled",type:{name:"boolean"},description:"When set to false, disables the OAuth2 configuration.",default:!1,required:!0,group:"Authentication - OAuth2"},{name:"auth.oauth2.provider",label:"OAuth2 Provider",type:{name:"option"},options:[{value:"default",label:"Default"},{value:"azure",label:"Azure"},{value:"google",label:"Google"}],description:"Used to configure supported OAuth2 providers.\nEach supported provider will require specific settings. It is not set by default. Supported providers are: `Default`, `Azure` and `Google`.",default:"default",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.client.id",label:"Client ID",type:{name:"string"},description:"The Client ID used as part of the authentication flow. It is always required except if using `Google` as provider. Required for providers: `Default`, `Azure`.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.client.secret",label:"Client Secret",type:{name:"password"},description:"The client secret used as part of the authentication flow. It is always required except if using `Google` as provider. Required for providers: `Default`, `Azure`.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.scopes",label:"Scopes",type:{name:"array",of:{type:{name:"string"},default:"",required:!0}},description:"A list of scopes that will be requested during the OAuth2 flow.\nIt is optional for all providers.",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.endpoint_params",label:"Endpoint Parameters",type:{name:"object",of:{type:{name:"array",of:{type:{name:"string"},default:"",required:!0}},required:!0}},description:"Set of values that will be sent on each request to the `Token URL`. Each param key can have multiple values. Can be set for all providers except `Google`.",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.token_url",label:"Token URL",type:{name:"string"},description:"The endpoint that will be used to generate the tokens during the OAuth2 flow. It is required if no provider is specified.\n> NOTE\n> For `Azure` provider either `Token URL` or Azure `Tenant ID` is required.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.azure.tenant_id",label:"Azure - Tenant ID",type:{name:"string"},description:"Used for authentication when using `Azure` provider.\n> NOTE\n> Since it is used in the process to generate the `Token URL`, it can't be used in combination with it.\n\nIt is not required.\n\nFor information about where to find it, you can refer to\nhttps://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.azure.resource",label:"Azure - WebAPI Resource",type:{name:"string"},description:"The accessed WebAPI resource when using `Azure` provider.\nIt is not required.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.google.credentials_file",label:"Google - Credentials File",type:{name:"string"},description:"The credentials file for `Google`.\n\n> NOTE\n> Only one of the credentials settings can be set at once. If none is provided, loading default credentials from the environment will be attempted via ADC. \n\nFor more information about how to provide Google credentials, please refer to https://cloud.google.com/docs/authentication.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.google.credentials_json",label:"Google - JSON Credentials File",type:{name:"string"},description:"Your credentials information as raw JSON.\n\n> NOTE\n> Only one of the credentials settings can be set at once. If none is provided, loading default credentials from the environment will be attempted via ADC.\n\nFor more information about how to provide Google credentials, please refer to https://cloud.google.com/docs/authentication.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"auth.oauth2.google.jwt_file",label:"Google - JWT Account Key File",type:{name:"string"},description:"The JWT Account Key file for Google.\n\n> NOTE\n> Only one of the credentials settings can be set at once. If none is provided, loading default credentials from the environment will be attempted via ADC.\n\nFor more information about how to provide Google credentials, please refer to https://cloud.google.com/docs/authentication.",default:"",required:!1,group:"Authentication - OAuth2"},{name:"request.ssl.enabled",label:"Enabled",type:{name:"boolean"},default:!1,description:"Is Syslog SSL enabled?",required:!1,group:"SSL Configuration"},{name:"request.ssl.certificate_authorities",label:"SSL Certificate Authorities",type:{name:"string"},default:"",description:"Path to the file with the list of root certificates for client verifications is only required if `Client Authentication` is configured. If `Certificate Authorities` is empty or not set, and `Client Authentication` is configured, the system keystore is used. If `Certificate Authorities` is self-signed, the host system needs to trust that CA cert as well.",required:!1,group:"SSL Configuration"},{name:"request.ssl.certificate",label:"SSL Certificate",type:{name:"string"},default:"",description:"For server authentication, the path to the SSL authentication certificate must be specified for TLS. If the certificate is not specified, startup will fail. When this option is configured, the key option is also required.",required:!1,group:"SSL Configuration"},{name:"request.ssl.key",label:"SSL Key",type:{name:"string"},default:"",description:"The server certificate key used for authentication is required.",required:!1,group:"SSL Configuration"},{name:"request.ssl.key_passphrase",label:"Pass phrase for SSL Key",type:{name:"password"},default:"",description:"The passphrase is used to decrypt an encrypted key stored in the configured key file.",required:!1,group:"SSL Configuration"},{name:"request.ssl.verification_mode",label:"Verification Mode",type:{name:"option"},options:[{value:"full",label:"Full: Verifies that the provided certificate is signed by a trusted authority (CA) and also verifies that the server’s hostname (or IP address) matches the names identified within the certificate."},{value:"strict",label:"Strict: Verifies that the provided certificate is signed by a trusted authority (CA) and also verifies that the server’s hostname (or IP address) matches the names identified within the certificate.If the Subject Alternative Name is empty, it returns an error."},{value:"certificate",label:"Certificate: Verifies that the provided certificate is signed by a trusted authority (CA), but does not perform any hostname verification."},{value:"none",label:"None: Performs no verification of the server’s certificate.This mode disables many of the security benefits of SSL/ TLS and should only be used after cautious consideration.It is primarily intended as a temporary diagnostic mechanism when attempting to resolve TLS errors; its use in production environments is strongly discouraged."}],default:"full",description:"Controls the verification of client certificates. The default value is `Full`.",required:!1,group:"SSL Configuration"},{name:"request.ssl.client_authentication",label:"Client Authentication",type:{name:"option"},options:[{value:"none",label:"None: Disables client authentication."},{value:"optional",label:"Optional: When a client certificate is supplied, the server will verify it."},{value:"required",label:"Required: Will require clients to provide a valid certificate."}],default:"none",description:"The type of client authentication mode. When `SSL Certificate Authorities` is set, it defaults to `Required`. Otherwise, it defaults to `None`.",required:!1,group:"SSL Configuration"},{name:"request.ssl.renegotiation",label:"Renegotiation",type:{name:"option"},options:[{value:"never",label:"Never: Disables renegotiation."},{value:"once",label:"Once: Allows a remote server to request renegotiation once per connection."},{value:"freely",label:"Freely: Allows a remote server to request renegotiation repeatedly."}],default:"never",description:"This configures what types of TLS renegotiation are supported. The default value is `Never`.",required:!1,group:"SSL Configuration"},{name:"request.ssl.supported_protocols",label:"Supported Protocols",type:{name:"array",of:{type:{name:"string"},default:"",required:!1}},description:"List of allowed SSL/TLS versions. If SSL/TLS server decides for protocol versions not configured, the connection will be dropped during or after the handshake. The setting is a list of allowed protocol versions: SSLv3, TLSv1 for TLS version 1.0, TLSv1.0, TLSv1.1, TLSv1.2, and TLSv1.3. The default value is [TLSv1.1, TLSv1.2, TLSv1.3].",required:!1,group:"SSL Configuration"},{name:"request.encode_as",label:"Encoding",type:{name:"option"},options:[{value:null,label:"** Not set ** <hr>"},{value:"application/json",label:"JSON (application/json)"},{value:"application/x-www-form-urlencoded",label:"Web Form URL Encoded (application/x-www-form-urlencoded)"}],description:"ContentType used for encoding the request body. If set it will force the encoding in the specified format regardless of the `Content- Type` header value, otherwise it will honor it if possible or fallback to `application / json`.\nBy default the requests are sent with `Content - Type: application / json`.\n> NOTE\n> `Web Form URL Encoded` will url encode the `url.params` and set them as the body.",default:null,required:!1,group:"Advanced - Request Body"},{name:"request.body",label:"Body Content",type:{name:"string",multilines:!0,textType:"json"},description:"An optional HTTP POST body.\nThis is only valid when `Request Method` is `POST`. Defaults to `null` (no HTTP body).\n::: danger\nThe configuration value must be a valid JSON object.\n:::",default:"",required:!1,group:"Advanced - Request Body"},{name:"request.retry.max_attempts",label:"Request Maximum Retry Attempts",type:{name:"number"},min:1,max:100,default:5,description:"The maximum number of retries for the HTTP client. The default is 5.",required:!1,group:"Advanced - Retries"},{name:"request.retry.wait_min",label:"Request Minimum Wait Before Retry",type:{name:"number"},suffix:{options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"s"},min:1,max:60,default:"1s",description:"The minimum time to wait before a retry is attempted. The default is 1 second.",required:!1,group:"Advanced - Retries"},{name:"request.retry.wait_max",label:"Request Maximum Wait Before Retry",type:{name:"number"},suffix:{options:[{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"s"},min:1,max:60,default:"60s",description:"The maximum time to wait before a retry is attempted. The default is 60 seconds.",required:!1,group:"Advanced - Retries"},{name:"request.redirect.forward_headers",label:"Redirect Forward Headers",type:{name:"boolean"},default:!1,description:"When set to `True` request headers are forwarded in case of a redirect. Default: `False`.",required:!1,group:"Advanced - Redirects"},{name:"request.redirect.headers_ban_list",label:"Redirect Forward Headers - Ban List",type:{name:"array",of:{type:{name:"string"},default:"",required:!1}},description:"When `Redirect Forward Headers` is set to `True`, all headers __except__ the ones defined in this list will be forwarded.",required:!1,group:"Advanced - Redirects"},{name:"request.redirect.max_redirects",label:"Maximum Redirects",type:{name:"number"},min:0,max:50,default:10,description:"The maximum number of redirects to follow for a request. The default is 10.",required:!1,group:"Advanced - Redirects"},{name:"request.rate_limit.limit",label:"Total Requests Limit",type:{name:"string"},default:"",description:"The value of the response that specifies the total limit. It is defined with a Go template value.\n> NOTE\n> Can read state from: [.last_response.header]\n\n::: tip Examples\n- 1500\n- `[[.last_response.header.X-RateLimit-Limit]]`\n:::\n",required:!1,group:"Advanced - Rate Limit"},{name:"request.rate_limit.remaining",label:"Remaining Requests",type:{name:"string"},default:"",description:"The value of the response that specifies the remaining quota of the rate limit. It is defined with a Go template value.\n> NOTE\n> Can read state from: [.last_response.header]\n\n::: tip Example\n`[[.last_response.header.X-RateLimit-Remaining]]`\n:::\n",required:!1,group:"Advanced - Rate Limit"},{name:"request.rate_limit.reset",label:"Reset Time",type:{name:"string"},default:"",description:"The value of the response that specifies the epoch time when the rate limit will reset. It is defined with a Go template value.\n> NOTE\n> Can read state from: [.last_response.header]\n\n::: tip Example\n`[[.last_response.header.X-RateLimit-Reset]]`\n:::\n",required:!1,group:"Advanced - Rate Limit"},{name:"request.transforms",label:"Transforms List",type:{name:"object",of:{type:{name:"string"},prefix:{options:[{value:"___set___👉",label:"Set to"},{value:"___append___👉",label:"Append"},{value:"___delete___👉",label:"Delete"}],default:"___set___👉"},suffix:{options:[{value:"👈___default___🚫",label:"No Default"},{value:"👈___default___",label:"Empty string"},{value:"👈___default___0",label:"0"},{value:"👈___default___[[now]]",label:"[[now]]"},{value:'👈___default___[[now (parseDuration "-1m")]]',label:'[[now (parseDuration "-1m")]]'},{value:'👈___default___[[now (parseDuration "-5m")]]',label:'[[now (parseDuration "-5m")]]'},{value:'👈___default___[[now (parseDuration "-10m")]]',label:'[[now (parseDuration "-10m")]]'},{value:'👈___default___[[now (parseDuration "-15m")]]',label:'[[now (parseDuration "-15m")]]'},{value:'👈___default___[[now (parseDuration "-30m")]]',label:'[[now (parseDuration "-30m")]]'},{value:'👈___default___[[now (parseDuration "-45m")]]',label:'[[now (parseDuration "-45m")]]'},{value:'👈___default___[[now (parseDuration "-1h")]]',label:'[[now (parseDuration "-1h")]]'},{value:'👈___default___[[now (parseDuration "-2h")]]',label:'[[now (parseDuration "-2h")]]'},{value:'👈___default___[[now (parseDuration "-3h")]]',label:'[[now (parseDuration "-3h")]]'},{value:'👈___default___[[now (parseDuration "-5h")]]',label:'[[now (parseDuration "-5h")]]'},{value:'👈___default___[[now (parseDuration "-6h")]]',label:'[[now (parseDuration "-6h")]]'},{value:'👈___default___[[now (parseDuration "-12h")]]',label:'[[now (parseDuration "-12h")]]'},{value:'👈___default___[[now (parseDuration "-24h")]]',label:'[[now (parseDuration "-24h")]]'},{value:'👈___default___[[now (parseDuration "-36h")]]',label:'[[now (parseDuration "-36h")]]'},{value:'👈___default___[[now (parseDuration "-48h")]]',label:'[[now (parseDuration "-48h")]]'},{value:'👈___default___[[now (parseDuration "-72h")]]',label:'[[now (parseDuration "-72h")]]'}],default:"👈___default___🚫"},default:"",required:!0},required:!0},description:'List of transforms to apply to the __request__ before each execution.\n\nAvailable transforms for request: `Append`, `Delete` and `Set`.\n\n> NOTE\n> Can __read__ state from:\n> - `.last_response.* `\n> - `.last_event.* `\n> - `.cursor.* `]\n>\n> Can __write__ state to:\n> - `header.* `\n> - `url.params.* `\n> - `body.*`\n\n::: tip Examples\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n|  body.from  | __Set to__ | `[[now (parseDuration "-1h")]]` | __[[now]]__ |\n|  body.variable_abc  | __Set to__ | `AUTO` |  |\n|  header.variable_xyz  | __Set to__ | `[[.last_response.header.X-Var-XYZ]]` | __0__ |\n|  body.my_array_of_names  | __Append__ | `Bill` |  |\n|  body.my_array_of_names  | __Append__ | `Bob` |  |\n|  body.useless_token  | __Delete__ |  |  |\n:::\n\n::: tip Creating an array of values\n\nUse __Append__, and use it several times with the same Target name.\nFor example, to create and `event_types` array in the `body` with the following 4 values:\n- `Auth Failure`\n- `Auth Success`\n- `Remote Connection`\n- `User Created`\n\nAdd these entries:\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n|  body.event_types  | __Append__ | `Auth Failure` |  |\n|  body.event_types  | __Append__ | `Auth Success` |  |\n|  body.event_types  | __Append__ | `Remote Connection` |  |\n|  body.event_types  | __Append__ | `User Created` |  |\n:::\n',required:!1,group:"Advanced - Request Transforms"},{name:"response.transforms",label:"Transforms List",type:{name:"object",of:{type:{name:"string"},prefix:{options:[{value:"___set___👉",label:"Set to"},{value:"___append___👉",label:"Append"},{value:"___delete___👉",label:"Delete"}],default:"___set___👉"},suffix:{options:[{value:"👈___default___🚫",label:"No Default"},{value:"👈___default___",label:"Empty string"},{value:"👈___default___0",label:"0"},{value:"👈___default___[[now]]",label:"[[now]]"},{value:'👈___default___[[now (parseDuration "-1m")]]',label:'[[now (parseDuration "-1m")]]'},{value:'👈___default___[[now (parseDuration "-5m")]]',label:'[[now (parseDuration "-5m")]]'},{value:'👈___default___[[now (parseDuration "-10m")]]',label:'[[now (parseDuration "-10m")]]'},{value:'👈___default___[[now (parseDuration "-15m")]]',label:'[[now (parseDuration "-15m")]]'},{value:'👈___default___[[now (parseDuration "-30m")]]',label:'[[now (parseDuration "-30m")]]'},{value:'👈___default___[[now (parseDuration "-45m")]]',label:'[[now (parseDuration "-45m")]]'},{value:'👈___default___[[now (parseDuration "-1h")]]',label:'[[now (parseDuration "-1h")]]'},{value:'👈___default___[[now (parseDuration "-2h")]]',label:'[[now (parseDuration "-2h")]]'},{value:'👈___default___[[now (parseDuration "-3h")]]',label:'[[now (parseDuration "-3h")]]'},{value:'👈___default___[[now (parseDuration "-5h")]]',label:'[[now (parseDuration "-5h")]]'},{value:'👈___default___[[now (parseDuration "-6h")]]',label:'[[now (parseDuration "-6h")]]'},{value:'👈___default___[[now (parseDuration "-12h")]]',label:'[[now (parseDuration "-12h")]]'},{value:'👈___default___[[now (parseDuration "-24h")]]',label:'[[now (parseDuration "-24h")]]'},{value:'👈___default___[[now (parseDuration "-36h")]]',label:'[[now (parseDuration "-36h")]]'},{value:'👈___default___[[now (parseDuration "-48h")]]',label:'[[now (parseDuration "-48h")]]'},{value:'👈___default___[[now (parseDuration "-72h")]]',label:'[[now (parseDuration "-72h")]]'}],default:"👈___default___🚫"},default:"",required:!0},required:!0},description:"List of transforms to apply to the __response__ once it is received.\n\nAvailable transforms for response: `Append`, `Delete` and `Set`.\n\n> NOTE\n> Can __read__ state from:\n> - `.last_response.* `\n> - `.last_event.* `\n> - `.cursor.* `]\n> - `.header.* `]\n> - `.url.* `]\n>\n> Can __write__ state to:\n> - `body.*`\n\n::: tip Examples\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n|  body.very_confidential  | __Delete__ |  |  |\n|  body.from_url  | __Set to__ | `[[.url.value]]` | __Empty string__ |\n|  body.variable_abc  | __Set to__ | `Static ABC value` |  |\n|  body.variable_xyz  | __Set to__ | `[[.last_response.header.X-Var-XYZ]]` |\n|  body.my_array_of_name  | __Append__ | `Bill` |  |\n|  body.my_array_of_name  | __Append__ | `Bob` |  |\n:::\n\n::: tip Creating an array of values\nUse __Append__, and use it several times with the same Target name.\nFor example, to create and `event_types` array with the following 4 values:\n- `Auth Failure`\n- `Auth Success`\n- `Remote Connection`\n- `User Created`\n\nAdd these entries:\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n __[[now]]__ |  |\n|  body.event_types  | __Append__ | `Auth Failure` |  |\n|  body.event_types  | __Append__ | `Auth Success` |  |\n|  body.event_types  | __Append__ | `Remote Connection` |  |\n|  body.event_types  | __Append__ | `User Created` |  |\n\nIf the array or entry might already exist in the response, some use case might require for it to be deleted first.\nLike so:\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n __[[now]]__ |  |\n|  body.event_types  | __Delete__ |  |  |\n|  body.event_types  | __Append__ | `Auth Failure` |  |\n|  body.event_types  | __Append__ | `Auth Success` |  |\n|  body.event_types  | __Append__ | `Remote Connection` |  |\n|  body.event_types  | __Append__ | `User Created` |  |\n:::\n\n",required:!1,group:"Advanced - Response Transforms"},{name:"response.split",label:"Splits List",type:{name:"not implemented"},default:"** NOT IMPLEMENTED **",description:"::: danger\n__NOT IMPLEMENTED__\n:::\n\nThe __split__ feature of Filebeat is a duplicate of the __Fan Out__ feature of the Open Collector.\nAs such, it is not necessary to implement it here.\n\n::: tip\nWhile building the __Field Mapping__, under __Modifier__ select: __Fan Out__.\n:::",required:!1,readonly:!0,group:"Advanced - Splits"},{name:"response.pagination",label:"Transforms List",type:{name:"object",of:{type:{name:"string"},prefix:{options:[{value:"___set___👉",label:"Set to"},{value:"___append___👉",label:"Append"},{value:"___delete___👉",label:"Delete"}],default:"___set___👉"},suffix:{options:[{value:"👈___default___🚫",label:"No Default"},{value:"👈___default___",label:"Empty string"},{value:"👈___default___0",label:"0"},{value:"👈___default___[[now]]",label:"[[now]]"},{value:'👈___default___[[now (parseDuration "-1m")]]',label:'[[now (parseDuration "-1m")]]'},{value:'👈___default___[[now (parseDuration "-5m")]]',label:'[[now (parseDuration "-5m")]]'},{value:'👈___default___[[now (parseDuration "-10m")]]',label:'[[now (parseDuration "-10m")]]'},{value:'👈___default___[[now (parseDuration "-15m")]]',label:'[[now (parseDuration "-15m")]]'},{value:'👈___default___[[now (parseDuration "-30m")]]',label:'[[now (parseDuration "-30m")]]'},{value:'👈___default___[[now (parseDuration "-45m")]]',label:'[[now (parseDuration "-45m")]]'},{value:'👈___default___[[now (parseDuration "-1h")]]',label:'[[now (parseDuration "-1h")]]'},{value:'👈___default___[[now (parseDuration "-2h")]]',label:'[[now (parseDuration "-2h")]]'},{value:'👈___default___[[now (parseDuration "-3h")]]',label:'[[now (parseDuration "-3h")]]'},{value:'👈___default___[[now (parseDuration "-5h")]]',label:'[[now (parseDuration "-5h")]]'},{value:'👈___default___[[now (parseDuration "-6h")]]',label:'[[now (parseDuration "-6h")]]'},{value:'👈___default___[[now (parseDuration "-12h")]]',label:'[[now (parseDuration "-12h")]]'},{value:'👈___default___[[now (parseDuration "-24h")]]',label:'[[now (parseDuration "-24h")]]'},{value:'👈___default___[[now (parseDuration "-36h")]]',label:'[[now (parseDuration "-36h")]]'},{value:'👈___default___[[now (parseDuration "-48h")]]',label:'[[now (parseDuration "-48h")]]'},{value:'👈___default___[[now (parseDuration "-72h")]]',label:'[[now (parseDuration "-72h")]]'}],default:"👈___default___🚫"},default:"",required:!0},required:!0},description:"List of transforms that will be applied to the __response__ to every new page request. All the transforms from `Request Transforms` will be executed and then `Response Pagination Transforms` will be added to modify the next request as needed. For subsequent responses, the usual `Response Transforms` and `Response Split` will be executed normally.\n\nAvailable transforms for response: `Append`, `Delete` and `Set`.\n\n> NOTE\n> Can __read__ state from:\n> - `.last_response.* `\n> - `.first_event.* `\n> - `.last_event.* `\n> - `.cursor.* `]\n>\n> Can __write__ state to:\n> - `body.*`\n> - `.header.* `]\n> - `.url.* `]\n\n::: tip Examples\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n|  url.value  | __Set to__ | `http://localhost:9200/_search/scroll` |  |\n|  url.params.scroll_id  | __Set to__ | `[[.last_response.body._scroll_id]]` | __0__ |\n|  body.scroll  | __Set to__ | `5m` |  |\n:::\n\n::: tip Creating an array of values\nUse __Append__, and use it several times with the same Target name.\nFor example, to create and `event_types` array with the following 4 values:\n- `Auth Failure`\n- `Auth Success`\n- `Remote Connection`\n- `User Created`\n\nAdd these entries:\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n|  body.event_types  | __Append__ | `Auth Failure` | |\n|  body.event_types  | __Append__ | `Auth Success` | |\n|  body.event_types  | __Append__ | `Remote Connection` | |\n|  body.event_types  | __Append__ | `User Created` | |\n\nIf the array or entry might already exist in the response, some use case might require for it to be deleted first.\nLike so:\n\n| Target | Transform | Value | Default to |\n| ------ |:---------:| ----- | ---------- |\n|  body.event_types  | __Delete__ |  | |\n|  body.event_types  | __Append__ | `Auth Failure` | |\n|  body.event_types  | __Append__ | `Auth Success` | |\n|  body.event_types  | __Append__ | `Remote Connection` | |\n|  body.event_types  | __Append__ | `User Created` | |\n:::\n\n",required:!1,group:"Advanced - Response Pagination Transforms"},{name:"cursor",label:"Cursors List",type:{name:"object",of:{type:{name:"string"},default:"",required:!0,suffix:{options:[{value:"👈___default___🚫",label:"No Default"},{value:"👈___default___",label:"Empty string"},{value:"👈___default___0",label:"0"},{value:"👈___default___[[now]]",label:"[[now]]"},{value:'👈___default___[[now (parseDuration "-1m")]]',label:'[[now (parseDuration "-1m")]]'},{value:'👈___default___[[now (parseDuration "-5m")]]',label:'[[now (parseDuration "-5m")]]'},{value:'👈___default___[[now (parseDuration "-10m")]]',label:'[[now (parseDuration "-10m")]]'},{value:'👈___default___[[now (parseDuration "-15m")]]',label:'[[now (parseDuration "-15m")]]'},{value:'👈___default___[[now (parseDuration "-30m")]]',label:'[[now (parseDuration "-30m")]]'},{value:'👈___default___[[now (parseDuration "-45m")]]',label:'[[now (parseDuration "-45m")]]'},{value:'👈___default___[[now (parseDuration "-1h")]]',label:'[[now (parseDuration "-1h")]]'},{value:'👈___default___[[now (parseDuration "-2h")]]',label:'[[now (parseDuration "-2h")]]'},{value:'👈___default___[[now (parseDuration "-3h")]]',label:'[[now (parseDuration "-3h")]]'},{value:'👈___default___[[now (parseDuration "-5h")]]',label:'[[now (parseDuration "-5h")]]'},{value:'👈___default___[[now (parseDuration "-6h")]]',label:'[[now (parseDuration "-6h")]]'},{value:'👈___default___[[now (parseDuration "-12h")]]',label:'[[now (parseDuration "-12h")]]'},{value:'👈___default___[[now (parseDuration "-24h")]]',label:'[[now (parseDuration "-24h")]]'},{value:'👈___default___[[now (parseDuration "-36h")]]',label:'[[now (parseDuration "-36h")]]'},{value:'👈___default___[[now (parseDuration "-48h")]]',label:'[[now (parseDuration "-48h")]]'},{value:'👈___default___[[now (parseDuration "-72h")]]',label:'[[now (parseDuration "-72h")]]'}],default:"👈___default___🚫"}}},description:"Cursor is a list of key value objects where arbitrary values are defined. \nThe values are interpreted as [value templates](https://github.com/elastic/beats/blob/7.12/x-pack/filebeat/docs/inputs/input-httpjson.asciidoc#value-templates) and a default template can be set.\nCursor state is kept between input restarts and updated once all the events for a request are published.\n\n> NOTE\n> Default templates do not have access to any state, only to functions.\n>\n> Can __read__ state from:\n> - `.last_response.* `\n> - `.first_event.* `\n> - `.last_event.* `\n>\n::: tip Examples\n\n| Key | Value | Default to |\n| --- | ----- | ---------- |\n| last_requested_at | `[[now]]` | __Empty String__ |\n| last_log_id | `[[.last_event._id]]` | __0__ |\n:::\n",required:!0,group:"Advanced - Cursors"},{name:"request.timeout",label:"Request Timeout",type:{name:"number"},suffix:{options:[{value:"ns",label:"NanoSeconds"},{value:"us",label:"MicroSeconds"},{value:"ms",label:"MilliSeconds"},{value:"s",label:"Seconds"},{value:"m",label:"Minutes"},{value:"h",label:"Hours"}],default:"s"},min:1,max:1e3,default:"30s",description:"Duration before declaring that the HTTP client connection has timed out. The default is 30 seconds.",required:!1,group:"Advanced - Miscellaneous"},{name:"config_version",label:"Configuration version",type:{name:"number"},min:1,max:2,description:"Defines the configuration version.\nV1 configuration is deprecated and will be unsupported in future releases.\n> Any new configuration should use `Configuration version` `2`.",default:2,required:!0,group:"Advanced - Miscellaneous"},{name:"enabled",label:"Enabled",type:{name:"boolean"},default:!0,description:"Is this Collection Method enabled?",required:!0,readonly:!0,group:"EZ Internal"},{name:"fields",label:"Identification Fields",type:{name:"object",of:{type:{name:"string"},default:"",description:"",required:!0}},description:"In addition to `stream_id` and `stream_name` fields that are automatically added, and cannot be removed or changed, you can add optional fields that you can specify to add additional information to the output.\nFor example, you might add fields that you can use for filtering log data.\nFields can be scalar values, arrays, dictionaries, or any nested combination of these.\nBy default, the fields that you specify here will be grouped under a fields sub-dictionary in the output document.\nTo store the custom fields as top-level fields, set the `fields_under_root option` to true. If a duplicate field is declared in the general configuration, then its value will be overwritten by the value declared here.",required:!0,group:"EZ Internal"}]},{shipper:"genericbeat",collectionMethod:"genericbeat",definition:[{name:"url",label:"API URL",type:{name:"string"},description:"Provide the API URL used to get data from the log source. The API URL consists of the API hostname and API endpoint only; do not include the query parameters string.",default:"",required:!0,group:"Required"},{name:"request_method",label:"Request Method",type:{name:"option"},options:[{value:"GET",label:"HTTP GET"},{value:"POST",label:"HTTP POST"}],description:"HTTP method to use when making requests. Default: `GET`.",default:"GET",required:!0,group:"Required"},{name:"auth_type",label:"Authentication Type",type:{name:"option"},options:[{value:"noauth",label:"No Authentication"},{value:"basic",label:"Basic Authentication"},{value:"token",label:"Header Based Authentication"},{value:"oauth20",label:"oAuth 2.0 Authentication"}],description:"The Generic beat supports three types of authentication mechanisms. Select one of the authentication types that is supported by the API in order to configure the Generic beat.\n\n#### **Basic authentication**\n\nThis is the most straightforward method and the easiest. With this method, the sender places a username:password into the request header. The username and password are encoded with Base64, which is an encoding technique that converts the username and password into a set of 64 characters to ensure safe transmission.\nA basic authentication in a request header will look similar to the following:\n``` text\nAuthorization: Basic bG9sOnNlY3VyZQ==\n```\n\n#### **Header-based authentication**\n\nHeader-based authentication (also called token authentication) is an HTTP authentication scheme that involves security tokens called bearer tokens.\nThe client must send this token in the authorization header when making requests to protected resources.\n``` text\nAuthorization: Bearer <token>\n```\n\n#### **OAuth (2.0) access token**\n\nSent like an API key, this token allows the application to access a user’s data. Optionally, access tokens can be configured to expire.\n\nAs of the 2021.10 version of the Generic beat, only the access token method is supported.\n\n::: tip Hint\nOnce the right Authentication Type has been selected, do configure its related section below:\n- Authentication - Basic\n- Authentication - Header Based\n- Authentication - oAuth 2.0\n:::",default:"noauth",required:!0,group:"Authentication"},{name:"basic_auth.username",label:"Username",type:{name:"string"},description:"The username required for basic authentication.",default:"",required:!0,group:"Authentication - Basic"},{name:"basic_auth.password",label:"Password",type:{name:"password"},obfuscation:{compulsory:!0,method:"oc_encrypt",obfuscatedFormatCheckRegex:"[0-9]\\|\\|.{23,}"},description:"The password required for basic authentication.",default:"",required:!0,group:"Authentication - Basic"},{name:"token_auth.auth_header",label:"Auth Header Field",type:{name:"string"},description:"The authentication header field needed to be sent in the request. For example, `Authorization`",default:"",required:!0,group:"Authentication - Header Based"},{name:"token_auth.auth_token",label:"Auth Token Value",type:{name:"password"},obfuscation:{compulsory:!0,method:"oc_encrypt",obfuscatedFormatCheckRegex:"[0-9]\\|\\|.{23,}"},description:"The token value sent in the request, including the append field, like Bearer or SSWS. For example, `SSWS 00uH4WDqFWdAlVNDzXQOLQBEA-JtlNzgCV4TwB`.",default:"",required:!0,group:"Authentication - Header Based"},{name:"oauth20_auth.url",label:"Provider URL",type:{name:"string"},description:"The URL of the authentication server.\nFor example, `https://gateway.qg1.apps.qualys.in/auth`.",default:"",required:!0,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.method",label:"Request Method",type:{name:"option"},options:[{value:"GET",label:"HTTP GET"},{value:"POST",label:"HTTP POST"}],description:"The request method to get the `access_token` from the authentication server. This could be `GET` or `POST`.",default:"POST",required:!1,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.content_type",label:"Content Type",type:{name:"option"},options:[{value:"application/json",label:"JSON (application/json)"},{value:"application/x-www-form-urlencoded",label:"Web Form URL Encoded (application/x-www-form-urlencoded)"}],description:"The content type of the request body. Choose one of the following content types as supported by the API.\n> NOTE\n> This is only necessary if the `Request Method` is `POST`.",default:"application/json",required:!0,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.body",label:'Request Body - For Content Type "JSON" Only',type:{name:"string",multilines:!0,textType:"json"},obfuscation:{compulsory:!0,method:"oc_encrypt",obfuscatedFormatCheckRegex:"[0-9]\\|\\|.{23,}"},description:'Optionally provide the entire JSON body to receive the access token from the server.\n> NOTE\n> This is only necessary if the `Content Type` is `JSON (application/json)`\n\n::: danger\n- The configuration value must be a valid JSON object.\n- As it might contain Secret(s), it must be obfuscated.\n:::\n\n::: tip Example\n```\n{\n  "user": "user_name",\n  "password": "b4d_p4ssw0rd"\n}\n```\n:::\n',default:"",required:!1,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.body_param",label:'Request Body Parameters - For Content Type "Web Form URL Encoded" Only',type:{name:"object",of:{type:{name:"password"},obfuscation:{compulsory:!0,method:"oc_encrypt",obfuscatedFormatCheckRegex:"[0-9]\\|\\|.{23,}"},default:"",required:!0}},description:"Optionally provide the body parameters as Key:Value pairs to receive the access token from the server.\n> NOTE\n> This is only necessary if the `Content Type` is `Web Form URL Encoded (application/x-www-form-urlencoded)`\n\n::: danger\nAs it might contain Secret(s), each entry must be obfuscated.\n:::\n\n::: tip Examples\n\n| Key | Value |\n| --- | ----- |\n| username | user_name |\n| password | b4d_p4ssw0rd |\n:::\n",default:"",required:!1,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.headers",label:"Request Headers",type:{name:"object",of:{type:{name:"string"},default:"",required:!0}},description:"Optionally provide the Request Headers supported by the API as Key:Value pairs.\n::: tip Examples\n\n| Key | Value |\n| --- | ----- |\n| Content-Type | application/json |\n:::\n",default:"",required:!1,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.params",label:"Request Parameters",type:{name:"object",of:{type:{name:"string"},default:"",required:!0}},description:"Optionally provide the Query Parameters supported by the API as Key:Value pairs.\n::: tip Examples\n\n| Key | Value |\n| --- | ----- |\n| limit | 100 |\n:::\n",default:"",required:!1,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.access_token_format",label:"Access Token Format",type:{name:"option"},options:[{value:"jsonkey",label:"JSON Key"},{value:"normaltext",label:"Normal Text"}],description:'The Generic beat supports two types of access token format. Choose the option supported by the API.\nThis could be:\n- `Normal text` format: Contains the access token in the text/plain;charset=UTF-8 form, as shown in the example below:\n``` text\neyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaXNTb2NpYWwiOnRydWV9.4pcPyMD09olPSyXnrXCjTwXyr4BsezdI1AVTmud2fU4\n```\n- `JSON Key` format: Contains the access token in JSON body, as shown in the example below:\n```\n{\n  "access_token": "4484e52dc4744374aced826a4543cd28988816ff",\n  "token_type": "Bearer",\n  "expires_in": 129599\n}\n```\n',default:"normaltext",required:!1,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.access_token_field",label:"Access Token Field",type:{name:"string"},description:'The field name in which the access token is coming in the response.\n> NOTE\n> This is only necessary if the `Access Token Format` is `JSON Key`\n\nFor example, in the JSON format below, the access token field is `access_token`:\n```\n{\n  "access_token": "4484e52dc4744374aced826a4543cd28988816ff",\n  "token_type": "Bearer",\n  "expires_in": 129599\n}\n```\n',default:"",required:!0,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.auth_header_field",label:"Authorization Header Field",type:{name:"string"},description:"The authorization header used to send the access token from auth server, in order to get the data records from the log source server.\nFor example, in the header below, the authorization header field is `authorization`:\n``` text\nauthorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaXNTb2NpYWwiOnRydWV9.4pcPyMD09olPSyXnrXCjTwXyr4BsezdI1AVTmud2fU4\n```\n",default:"",required:!0,group:"Authentication - oAuth 2.0"},{name:"oauth20_auth.auth_append_field",label:"Auth Token Append Field",type:{name:"string"},description:"The field to append in the retrieved access token when requesting data from the log source server.\nFor example, in the header below, the auth token field is `Bearer`:\n``` text\nauthorization:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaXNTb2NpYWwiOnRydWV9.4pcPyMD09olPSyXnrXCjTwXyr4BsezdI1AVTmud2fU4\n```\n",default:"",required:!0,group:"Authentication - oAuth 2.0"},{name:"pagination_type",label:"Pagination Style",type:{name:"option"},options:[{value:"cursor",label:"Cursor Pagination"},{value:"pagebased",label:"Page Number Pagination"},{value:"limitoffset",label:"Limit Offset Pagination"},{value:"nopagination",label:"No Pagination"}],default:"nopagination",description:"The Generic beat supports four types of pagination styles.\n\nMost endpoints that return a list of entities will need to have some sort of pagination. Without pagination, a simple search could return millions or even billions of hits, causing extraneous network traffic. Pagination requires an implied ordering. By default, this may be the item's unique identifier, but can be other ordered fields such as a created date.\n\nBefore configuring the Generic beat for log sources, it is recommended to learn the types of pagination styles that your API supports using the following methods.\n\n#### **Cursor-based pagination**\n\nIn cursor-based pagination, when a request is made, the server returns the first page of data and the cursor points to the next page. A cursor can be a URL to the next page or it could be a token after which the next records should be fetched.\nA cursor-based pagination in a response header could look similar to the following:\n``` text\nLink: \"<https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={page_info}&limit={limit}>; rel={next}, ...\n```\n\n#### **Page number-based pagination**\n\nThis is the simplest and most common form of pagination, particularly for apps that use SQL databases. Using this method, the set is divided into pages. The endpoint accepts a page parameter that is an integer indicating the page within the list to be returned.\nFor example:\n``` text\nhttps://lrtestapi.azurewebsites.net/countries/?starttime=2021-08-03+17%3A26%3A44.223638&endtime=2021-08-03+17%3A35%3A30.692350&page=2&pagesize=15\n```\n\n#### **Offset pagination**\n\nLimit/Offset pagination can be retrieved using the following:\n``` text\nGET /items?limit=20&offset=100\n```\nThis query would return 20 rows, starting with the 100th row.\n\n> NOTE\n> For more information about how each work, please refer to:\n> - https://docs.logrhythm.com/docs/OCbeats/generic-beat/configure-the-generic-beat#ConfiguretheGenericBeat-Pagination\n> - https://docs.logrhythm.com/docs/OCbeats/generic-beat/configure-the-generic-beat#ConfiguretheGenericBeat-PaginationStyles\n\n::: tip Hint\nOnce the right Pagination Style has been selected, do configure its related section below:\n- Pagination - Cursor\n- Pagination - Page-Based\n- Pagination - Limit and Offset\n:::",required:!0,group:"Pagination"},{name:"pagination.cursor_based.cursor_type",label:"Cursor Type",type:{name:"option"},options:[{value:"url",label:"URL"},{value:"query_param",label:"Query Parameter"}],default:"url",description:'The cursor type can be a URL to the next set of data records or it can be a token to fetch the next set of records as a query parameter.\n\n::: tip Examples\n- In the sample below, the cursor type is `URL` (as per line 3):\n```\n{\n  "count": 87,\n  "next": "https://swapi.co./api/people/?page=2",\n  "previous": null,\n  "result": [ ... ]\n}\n```\n\n- In the sample below, the cursor type is `Query Parameter` (as per line 4):\n```\n"data": [ ... ],\n"pageing": {\n  "cursors": {\n    "next": "MTAxNTExOTQ1MjAwNzI5NDE=",\n    "before": "NDMyNzQyODI3OTQw"\n  }\n}\n```\n\nAnd would be typically used like this in the URL Parameters:\n``` text\nhttps://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE=\n```\n\n:::\n',required:!0,group:"Pagination - Cursor"},{name:"pagination.cursor_based.cursor_location",label:"Cursor Location",type:{name:"option"},options:[{value:"body",label:"Response Body"},{value:"header",label:"Response Header"}],default:"body",description:'The cursor can be located in response headers or the response body.\n\n::: tip Examples\n- In the sample below, the cursor location is `Response Body` (as per line 7):\n```\n{\n  "version": "v1.2.0",\n  "metadata": {\n    "links": {\n      "self": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=53000",\n      "prev": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=52500",\n      "next": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=53500"\n    },\n    "results": { ... }\n  },\n}\n```\n\n- In the sample below, the cursor location is `Response Header`:\n``` text\nLink: "<https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={page_info}&limit={limit}>; rel={next}, ...\n```\n:::\n',required:!0,group:"Pagination - Cursor"},{name:"pagination.cursor_based.cursor_field",label:'Cursor Field - For Location "Response Body" Only',type:{name:"string"},default:"",description:'The cursor field refers to the field name in which the cursor appears inside the response body.\n> NOTE\n> This is only necessary if the `Cursor Location` is `Response Body`\n\n::: tip Example\n- In the sample below, the cursor field is `next` (as per line 7):\n```\n{\n  "version": "v1.2.0",\n  "metadata": {\n    "links": {\n      "self": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=53000",\n      "prev": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=52500",\n      "next": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=53500"\n    },\n    "results": { ... }\n  },\n}\n```\n:::\n',required:!1,group:"Pagination - Cursor"},{name:"pagination.cursor_based.cursor_query_param",label:'Cursor Query Param - For Type "Query Parameter" Only',type:{name:"string"},default:"",description:"Cursor query param is the field name in the request query param in which the next token will be sent.\n> NOTE\n> This is only necessary if the `Cursor Type` is `Query Parameter`\n\n::: tip Example\nTo produce the the sample below, the cursor query param is set to `after`:\n``` text\nhttps://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE=\n```\n:::\n",required:!1,group:"Pagination - Cursor"},{name:"pagination.cursor_based.cursor_header_type",label:'Cursor Header Type - For Location "Response Header" Only',type:{name:"option"},options:[{value:"custom_header",label:"Custom Header"},{value:"link",label:"Link-defined HTTP Header"}],default:"custom_header",description:"The cursor header type can be either a link-defined HTTP header, or a custom header that can be any named field.\n> NOTE\n> This is only necessary if the `Cursor Location` is `Response Header`\n",required:!1,group:"Pagination - Cursor"},{name:"pagination.cursor_based.cursor_header_field",label:'Cursor Header Field - For Location "Response Header" Only',type:{name:"string"},default:"",description:'The cursor header field is the field name from which the token is pulled.\n> NOTE\n> This is only necessary if the `Cursor Location` is `Response Header`\n\n::: tip\nIf it is a `Link-defined HTTP Header`, it is recommended to provide the `rel` value here.\n:::\n\n::: tip Example\nIn the sample below, the cursor header field is `next`.\n``` text\nLink: "<https://{shop}.myshopify.com/admin/api/{version}/products.json?page_info={page_info}&limit={limit}>; rel={next}, ...\n```\n:::\n',required:!1,group:"Pagination - Cursor"},{name:"pagination.page_based.pagesize_field",label:"Page Size Field",type:{name:"string"},default:"",description:"The field name for page size.\n::: tip Example\nIn the URL sample below, the page size field is `pagesize`:\n``` text\nhttps://lrtestapi.azurewebsites.net/countries/?starttime=2021-08-03+17%3A26%3A44.223638&endtime=2021-08-03+17%3A35%3A30.692350&page=2&pagesize=15\n```\n:::\n",required:!0,group:"Pagination - Page-Based"},{name:"pagination.page_based.pagesize_value",label:"Page Size Value",type:{name:"number"},min:1,max:5e3,default:"1000",description:"The value for page size to limit the number of records returned by the server in a single request.\n::: tip Example\nIn the URL sample below, the page size value is `15`:\n``` text\nhttps://lrtestapi.azurewebsites.net/countries/?starttime=2021-08-03+17%3A26%3A44.223638&endtime=2021-08-03+17%3A35%3A30.692350&page=2&pagesize=15\n```\n:::\n",required:!0,group:"Pagination - Page-Based"},{name:"pagination.page_based.pagenumber_field",label:"Page Number Field",type:{name:"string"},default:"",description:"The field name for the page number.\n::: tip Example\nIn the URL sample below, the page size field is `page`:\n``` text\nhttps://lrtestapi.azurewebsites.net/countries/?starttime=2021-08-03+17%3A26%3A44.223638&endtime=2021-08-03+17%3A35%3A30.692350&page=2&pagesize=15\n```\n:::\n",required:!0,group:"Pagination - Page-Based"},{name:"pagination.limit_offset.limit_field",label:"Limit Field",type:{name:"string"},default:"",description:'The field name to be used as the limit.\n::: tip Example\nIn the command sample below, the limit field is `limit`:\n``` text\n$ curl https://api.box.com/2.0/folders/0/items?offset=0&limit=100 \\\n -H "authorization: Bearer ACCESS_TOKEN"\n```\n:::\n',required:!0,group:"Pagination - Limit and Offset"},{name:"pagination.limit_offset.limit_value",label:"Limit Value",type:{name:"number"},min:1,max:5e3,default:"1000",description:'The total number of records to be returned in a single request.\n::: tip Example\nIn the command sample below, the limit value is `100`:\n``` text\n$ curl https://api.box.com/2.0/folders/0/items?offset=0&limit=100 \\\n -H "authorization: Bearer ACCESS_TOKEN"\n```\n:::\n',required:!0,group:"Pagination - Limit and Offset"},{name:"pagination.limit_offset.offset_field",label:"Offset Field",type:{name:"string"},default:"",description:'The field name to be used as the offset.\n::: tip Example\nIn the command sample below, the offset field is `offset`:\n``` text\n$ curl https://api.box.com/2.0/folders/0/items?offset=0&limit=100 \\\n -H "authorization: Bearer ACCESS_TOKEN"\n```\n:::\n',required:!0,group:"Pagination - Limit and Offset"},{name:"filter_type",label:"Filter Type",type:{name:"option"},options:[{value:"afterstart",label:"Date Range - After any specific date"},{value:"startend",label:"Date Range - Between start and end date"},{value:"interval",label:"Date Range - Within an interval"},{value:"nofilter",label:"No Filter"}],default:"nofilter",description:'If the API does support date / period / interval filters, then pick the right one from the list, otherwise choose `No Filter`.\n\n#### **After any specific start date**\n\nThe `after any specific start date` filter takes a start value provided by the user and requests records from the server, fetching logs from after the specified start date.\nThe following is an example of the `after any specific start date` filter.\n``` text\n$ curl -v -X GET \\\n -H "Accept: application/json" \\\n -H "Content-Type: application/json" \\\n -H "Authorization: SSWS ${api_token}" \\\n "https://${yourOktaDomain}/api/v1/logs?since=2017-10-01T00:00:00.000Z"\n```\n\n#### **Between start and end date**\n\nThe `between start and end date` filter fetches the logs within the given range of start date and end date. Ensure the API supports this filter on the server end.\nThe following is an example request using the `between start and end date` filter.\n``` text\nhttps://api.amp.cisco.com/v1/audit?start_time=2021-09-15T09:28:58Z&limit=250&offset=0&end_time=2021-09-28T08:29:28Z\n```\n\n#### **Within an interval**\n\nSimilar to the `between start and end date` filter, the `within an interval` filter fetches the logs between any specific start time and end time, with the only difference being the format in which the start and end date are sent. In this filter, the start and end dates are sent in a single string separated by a delimiter.\nThe following is an example of the `within an interval` filter.\n``` text\nhttps://tap-api-v2.proofpoint.com/v2/siem/messages/blocked?interval=2021-10-08T00:00:00.000Z/2021-10-08T01:00:00.000Z\n```\n\n::: tip Hint\nOnce the right Date Range Filter has been selected, do configure its related section below:\n- Date Range Filter - After any specific start date\n- Date Range Filter - Between start and end date\n- Date Range Filter - Within an interval\n:::',required:!0,group:"Date Range Filter"},{name:"time_format",label:"Time Format",type:{name:"option"},options:[{value:"02 Jan 06 15:04 -0700",label:"02 Jan 06 15:04 -0700"},{value:"02 Jan 06 15:04 MST",label:"02 Jan 06 15:04 MST"},{value:"2006-01-02T15:04:05.999999999Z07:00",label:"2006-01-02T15:04:05.999999999Z07:00"},{value:"2006-01-02T15:04:05Z07:00",label:"2006-01-02T15:04:05Z07:00"},{value:"Mon Jan 02 15:04:05 -0700 2006",label:"Mon Jan 02 15:04:05 -0700 2006"},{value:"Mon Jan _2 15:04:05 2006",label:"Mon Jan _2 15:04:05 2006"},{value:"Mon Jan _2 15:04:05 MST 2006",label:"Mon Jan _2 15:04:05 MST 2006"},{value:"Mon, 02 Jan 2006 15:04:05 -0700",label:"Mon, 02 Jan 2006 15:04:05 -0700"},{value:"Mon, 02 Jan 2006 15:04:05 MST",label:"Mon, 02 Jan 2006 15:04:05 MST"},{value:"Monday, 02-Jan-06 15:04:05 MST",label:"Monday, 02-Jan-06 15:04:05 MST"},{value:"UNIX_MILLISECONDS_TIMESTAMP",label:"UNIX_MILLISECONDS_TIMESTAMP"},{value:"UNIX_SECONDS_TIMESTAMP",label:"UNIX_SECONDS_TIMESTAMP"}],default:"2006-01-02T15:04:05Z07:00",description:"This refers to the date-time format that the API supports, i.e. RFC3339 or ISO8601.\nSelect the appropriate time format from the drop-down menu.",required:!0,group:"Date Range Filter"},{name:"filter.delay_time",label:"Delay Time",type:{name:"number"},suffix:{options:[{value:"s",label:"Seconds"}],default:"s"},min:0,max:3600,default:"0s",description:"Some APIs don't support exact real-time log fetching. In this case, add the delay in seconds that the API supports.\n::: tip Example\nFor example, if the API supports a five seconds delay, enter `5 Seconds`.\n:::",required:!0,group:"Date Range Filter"},{name:"filter.after_start_filter.start_field",label:"Start Field",type:{name:"string"},default:"",description:'The field name used to send the start time in the request.\n::: tip Example\nIn the command sample below, the start field is `since` (as per line 5):\n``` text\n$ curl -v -X GET \\\n -H "Accept: application/json" \\\n -H "Content-Type: application/json" \\\n -H "Authorization: SSWS ${api_token}" \\\n "https://${yourOktaDomain}/api/v1/logs?since=2017-10-01T00:00:00.000Z"\n```\n:::\n',required:!0,group:"Date Range Filter - After any specific start date"},{name:"filter.after_start_filter.start_value",label:"Start Value",type:{name:"string"},default:"",description:'The start date value from which logs should be fetched from the server. \n::: danger\nWhen giving the start date as back days, ensure the API supports that number of back days to fetch logs.\nFor example, if the start value is 7 days before the current date, then the API must support 7 day backlogs; otherwise, the beat will return an error.\n:::\n\n::: tip Example\nIn the command sample below, the start value is `2017-10-01T00:00:00.000Z` (as per line 5):\n``` text\n$ curl -v -X GET \\\n -H "Accept: application/json" \\\n -H "Content-Type: application/json" \\\n -H "Authorization: SSWS ${api_token}" \\\n "https://${yourOktaDomain}/api/v1/logs?since=2017-10-01T00:00:00.000Z"\n```\n:::\n',required:!0,group:"Date Range Filter - After any specific start date"},{name:"filter.after_start_filter.response_date_field",label:"Next Start Date Response Field",type:{name:"string"},default:"",description:'This is the date field to parse from the response to fetch the next set of records.\n::: danger\nThis is JSON path within the record, using the dotted notation.\nSee example below.\n:::\n\n::: tip Example\nIn the sample below, the next start date is `data.date` (branch `data` as per line 11 and leaf `date` as per line 15):\n```\n{\n  "version": "v1.2.0",\n  "metadata": {\n    "links": {\n      "self": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=53000",\n      "prev": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=52500",\n      "next": "https://api.amp.cisco.com/v1/events?limit=500&start_date=2021-09-21T00:00:00Z&offset=53500"\n    },\n    "results": { ... }\n  },\n  "data" : [\n    {\n      "id": 163336102013548932156345045,\n      "timestamp": 1633361020,\n      "date": "2021-10-04T15:23:40+00:00",\n      "event_type": "DFC Threat Detected",\n      ...\n    }\n  ]\n}\n```\n:::\n',required:!0,group:"Date Range Filter - After any specific start date"},{name:"filter.start_and_end_filter.start_field",label:"Start Field",type:{name:"string"},default:"",description:"The field name used to send the start time in the request.\n::: tip Example\nIn the URL sample below, the start field is `start_time`:\n``` text\nhttps://api.amp.cisco.com/v1/audit?start_time=2021-09-15T09:28:58Z&limit=250&offset=0&end_time=2021-09-28T08:29:28Z\n```\n:::\n",required:!0,group:"Date Range Filter - Between start and end date"},{name:"filter.start_and_end_filter.start_value",label:"Start Value",type:{name:"string"},default:"",description:"The start date value from which logs should be fetched from the server. \n::: danger\nWhen giving the start date as back days, ensure the API supports that number of back days to fetch logs.\nFor example, if the start value is 7 days before the current date, then the API must support 7 day backlogs; otherwise, the beat will return an error.\n:::\n\n::: tip Example\nIn the URL sample below, the start value is `2021-09-15T09:28:58Z`:\n``` text\nhttps://api.amp.cisco.com/v1/audit?start_time=2021-09-15T09:28:58Z&limit=250&offset=0&end_time=2021-09-28T08:29:28Z\n```\n:::\n",required:!0,group:"Date Range Filter - Between start and end date"},{name:"filter.start_and_end_filter.end_field",label:"End Field",type:{name:"string"},default:"",description:"The field name to be used to send the end date in the request.\n::: tip Example\nIn the URL sample below, the end field is `end_time`:\n``` text\nhttps://api.amp.cisco.com/v1/audit?start_time=2021-09-15T09:28:58Z&limit=250&offset=0&end_time=2021-09-28T08:29:28Z\n```\n:::\n",required:!0,group:"Date Range Filter - Between start and end date"},{name:"filter.start_and_end_filter.end_value",label:"End Value",type:{name:"string"},default:"",description:"The end date value until which logs should be fetched from the server.\n::: danger\nThe end date value must be set according to the maximum interval that the API supports.\nFor example, if the API supports a maximum of one hour logs in a single API request and the start value is 2021-10-02T08:00:00Z, then the end value must be 2021-10-02T09:00:00Z, for a difference of one hour.\n:::\n\n::: tip Example\nIn the URL sample below, the end value is `2021-09-28T08:29:28Z`:\n``` text\nhttps://api.amp.cisco.com/v1/audit?start_time=2021-09-15T09:28:58Z&limit=250&offset=0&end_time=2021-09-28T08:29:28Z\n```\n:::\n",required:!0,group:"Date Range Filter - Between start and end date"},{name:"filter.interval_filter.interval_field",label:"Interval field",type:{name:"string"},default:"",description:"The field name in which the date and time are sent.\n::: tip Example\nIn the URL sample below, the interval field is `interval`:\n``` text\nhttps://tap-api-v2.proofpoint.com/v2/siem/messages/blocked?interval=2021-10-08T00:00:00.000Z/2021-10-08T01:00:00.000Z\n```\n:::\n",required:!0,group:"Date Range Filter - Within an interval"},{name:"filter.interval_filter.interval_value",label:"Interval Value",type:{name:"string"},default:"",description:"Interval values contain the start time and end time values separated by delimiter, as supported by the API.\n::: danger\nWhen giving the start date as back days, ensure the API supports that number of back days to fetch logs.\nFor example, if the start value is 7 days before the current date, then the API must support 7 day backlogs; otherwise, the beat will return an error.\n\nThe end date value must be set according to the maximum interval that the API supports.\nFor example, if the API supports a maximum of one hour logs in a single API request and the start value is 2021-10-02T08:00:00Z, then the end value must be 2021-10-02T09:00:00Z, for a difference of one hour.\n:::\n\n::: tip Example\nIn the URL sample below, the interval value is `2021-10-08T00:00:00.000Z/2021-10-08T01:00:00.000Z`:\n``` text\nhttps://tap-api-v2.proofpoint.com/v2/siem/messages/blocked?interval=2021-10-08T00:00:00.000Z/2021-10-08T01:00:00.000Z\n```\n:::\n",required:!0,group:"Date Range Filter - Within an interval"},{name:"filter.interval_filter.split_char",label:"Split Character",type:{name:"string"},default:"",description:"The delimiter between the start and end time in the interval value.\n::: tip Example\nIn the URL sample below, the split character is `/`:\n``` text\nhttps://tap-api-v2.proofpoint.com/v2/siem/messages/blocked?interval=2021-10-08T00:00:00.000Z/2021-10-08T01:00:00.000Z\n```\n:::\n",required:!0,group:"Date Range Filter - Within an interval"},{name:"sorting_enabled",label:"Enabled",type:{name:"boolean"},default:!1,description:"Does this API support sorting?\nSorting is an important feature for any API endpoint that returns a lot of data. When returning a list of users, your API users may want to sort by last modified date or by email.\nTo enable sorting, many APIs add a sort or sort_by URL parameter that can take a field name as the value. However, good API designs give the flexibility to specify ascending or descending order. Specifying the order requires encoding three components into a key/value pair.\n\nThe following are example formats for using the sorting feature:\n``` text\nGET /users?sort_by=asc(email)\n  and\nGET /users?sort_by=desc(email)\n```\n\n``` text\nGET /users?sort_by=+email\n  and\nGET /users?sort_by=-email\n```\n\n``` text\nGET /users?sort_by=email.asc\n  and\nGET /users?sort_by=email.desc\n```\n",required:!0,group:"Sorting Field"},{name:"sorting.sorting_field",label:"Sorting Field",type:{name:"string"},description:"The field name that the API supports for sorting.\nFor example, in the URL below, the sorting field is `sortOrder`:\n``` text\nhttps://dev-7887806.okta.com/api/v1/logs?since=2021-09-01T18:29:00Z&until=2021-10-05T18:29:00Z&limit=1000&sortOrder=ASCENDING\n```\n",default:"",required:!1,group:"Sorting Field"},{name:"sorting.sorting_value",label:"Sorting Value",type:{name:"string"},description:"The value used to determine sorting order.\nFor example, in the URL below, the sorting value is `ASCENDING`:\n``` text\nhttps://dev-7887806.okta.com/api/v1/logs?since=2021-09-01T18:29:00Z&until=2021-10-05T18:29:00Z&limit=1000&sortOrder=ASCENDING\n```\n",default:"",required:!1,group:"Sorting Field"},{name:"headers",label:"Request Headers",type:{name:"object",of:{type:{name:"string"},default:"",required:!0}},description:"Optionally provide the Request Headers supported by the API as Key:Value pairs.\n::: tip Examples\n\n| Key | Value |\n| --- | ----- |\n| Content-Type | application/json |\n:::\n",default:"",required:!1,group:"Request Headers and Parameters"},{name:"params",label:"Request Parameters",type:{name:"object",of:{type:{name:"string"},default:"",required:!0}},description:"Optionally provide the Query Parameters supported by the API as Key:Value pairs.\n::: tip Examples\n\n| Key | Value |\n| --- | ----- |\n| limit | 100 |\n:::\n",default:"",required:!1,group:"Request Headers and Parameters"},{name:"response_field_flag",label:"Enabled",type:{name:"option"},options:[{value:"true",label:"Yes"},{value:"false",label:"No"}],default:!1,description:"Some servers send data records in a specific field in JSON response.\nIf this is the case with this API, select `Yes` and specify the field name below.",required:!0,group:"Response Data Field"},{name:"response_field",label:"Response Data Field",type:{name:"string"},description:'Refers to the field name that contains the data records.\n> NOTE\n> This is only necessary if the `Enabled` is `Yes`\n\nFor example, in the JSON below, the data field is `logs`:\n```\n{\n  "journal": "ABYR-USER",\n  "version": "v1.0.3",\n  "logs": [\n    {\n      "timestamp": 1632924862,\n      "message": "User Logon",\n      "host": "laptop01",\n      "user": "Billy"\n    },\n    {\n      "timestamp": 1632925741,\n      "message": "User Logoff",\n      "host": "laptop01",\n      "user": "Billy"\n    }\n  ]\n}\n```\n',default:"",required:!1,group:"Response Data Field"},{name:"period",label:"Period",type:{name:"number"},suffix:{options:[{value:"s",label:"Seconds"}],default:"s"},min:1,max:3600,default:"60s",description:"The period value defines the polling interval to fetch records from the server, in seconds.\nIf the API server has a request limit, set the period value accordingly to avoid the `request limit error` with error code `429`.\n\n::: tip Examples\n- If the API supports 1800 requests per 24 hours, then set the `Period` value to be `60 Seconds`\n- If the API supports 5 requests per hour, then set the `Period` value to be `720 Seconds`\n- If the API supports 1 request per day, then set the `Period` value to be `86400 Seconds`\n:::",required:!0,group:"Polling Interval"},{name:"beatIdentifier",label:"Beat Identifier",type:{name:"string"},default:"",description:"This is the identifier used by Generic Beat to name its separate instances.\n> NOTE\n> - It is limited to 12 characters in length.\n> - It's concatenated with `genericbeat_` to produce the Fully Qualified Beat Name (`fullyqualifiedbeatname` aka `fqbn`) in the form of `genericbeat_xxxxxxxxxxxx`\n",required:!0,readonly:!0,group:"EZ Internal"},{name:"logsource_name",label:"LogSource Name",type:{name:"string"},default:"",description:"This is the identifier transformed internally to `device_type`, and is usually provided by Generic Beat to the SIEM.\nIt's used for the Log Source Virtualisation.",required:!0,readonly:!0,group:"EZ Internal"}]}],collectionShippersOptions:[{value:"jsBeat",label:"jsBeat",icon:"jsBeat",outputFormat:"json"},{value:"genericbeat",label:"LogRhythm Generic HTTP Rest Beat",icon:"logrhythm-genericbeat",outputFormat:"yaml"},{value:"filebeat",label:"Filebeat",icon:"filebeat",outputFormat:"yaml"}],openCollectorBeats:[{value:"carbonblackcloudbeat",label:"carbonblackcloudbeat",icon:"logrhythm-carbonblackcloudbeat"},{value:"ciscoampbeat",label:"ciscoampbeat",icon:"logrhythm-ciscoampbeat"},{value:"duobeat",label:"duobeat",icon:"logrhythm-duobeat"},{value:"eventhubbeat",label:"eventhubbeat",icon:"logrhythm-eventhubbeat"},{value:"gmtbeat",label:"gmtbeat",icon:"logrhythm-gmtbeat"},{value:"genericbeat",label:"genericbeat",icon:"logrhythm-genericbeat"},{value:"gsbeat",label:"gsbeat",icon:"logrhythm-gsbeat"},{value:"kafkabeat",label:"kafkabeat",icon:"logrhythm-kafkabeat"},{value:"oktabeat",label:"oktabeat",icon:"logrhythm-oktabeat"},{value:"pubsubbeat",label:"pubsubbeat",icon:"logrhythm-pubsubbeat"},{value:"qualysfimbeat",label:"qualysfimbeat",icon:"logrhythm-qualysfimbeat"},{value:"s3beat",label:"s3beat",icon:"logrhythm-s3beat"},{value:"sophoscentralbeat",label:"sophoscentralbeat",icon:"logrhythm-sophoscentralbeat"},{value:"webhookbeat",label:"webhookbeat",icon:"logrhythm-webhookbeat"}],collectionMethodsOptions:[{shipper:"jsBeat",value:"flatFile",label:"Flat File",icon:"description"},{shipper:"jsBeat",value:"syslog",label:"Syslog",icon:"input"},{shipper:"genericbeat",value:"genericbeat",label:"HTTP / REST API",icon:"language"},{shipper:"filebeat",value:"log",label:"Flat File",icon:"description"},{shipper:"filebeat",value:"httpjson",label:"HTTP / REST API",icon:"language"},{shipper:"filebeat",value:"http_endpoint",label:"HTTP / Web Hook Endpoint",icon:"cloud_upload"},{shipper:"filebeat",value:"syslog_tcp",label:"Syslog over TCP",icon:"input"},{shipper:"filebeat",value:"syslog_udp",label:"Syslog over UDP",icon:"input"}],openCollectorLogSources:[]}},w=a("76ad");function T(e){return e.openCollectors}function S(e){return e.pipelines}function C(e){return Object.keys(e.shippersUrlsInternal).length?e.shippersUrlsInternal:w}function A(e){return e.openCollectorLogSources}var q=a("1732");function I(e,t){if(t&&t.name&&t.name.length>0){const a=Object.assign({},t);(!a.uid||a.uid&&0===a.uid.length)&&(a.uid=Object(q["a"])()),e.openCollectors.push(a)}}function P(e,t){if(t&&t.uid&&t.uid.length){const a=e.openCollectors.find((e=>e.uid===t.uid)),n=["name","hostname","port","authenticationMethod","username","password","privateKey","osVersion","ocInstalled","ocVersion","fbInstalled","fbVersion"];n.forEach((e=>{t[e]&&(a[e]=t[e])}));const o=["pipelines","installedShippers"];o.forEach((e=>{t[e]&&(a[e]=[].concat(t[e]))}))}}function x(e,t){if(t&&t.uid&&t.uid.length){const a=e.openCollectors.findIndex((e=>e.uid===t.uid));a>=0&&e.openCollectors.splice(a,1)}}function D(e,t){t&&Array.isArray(t)&&(e.openCollectors=t)}function O(e,t){if(t&&t.name&&t.name.length>0){const a=Object.assign({},t);(!a.uid||a.uid&&0===a.uid.length)&&(a.uid=Object(q["a"])()),e.pipelines.push(a)}}function E(e,t){if(t&&t.uid&&t.uid.length){const a=e.pipelines.find((e=>e.uid===t.uid)),n=["status","primaryOpenCollector","collectionConfig"];n.forEach((e=>{t[e]&&(a[e]=t[e])})),t.fieldsMapping&&(a.fieldsMapping=[].concat(t.fieldsMapping))}}function L(e,t){if(t&&t.uid&&t.uid.length){const a=e.pipelines.findIndex((e=>e.uid===t.uid));a>=0&&e.pipelines.splice(a,1)}}function k(e,t){t&&Array.isArray(t)&&(e.pipelines=t)}function N(e,t){if(t){e.jwtToken=t.token;try{0}catch(a){}}}function B(e,t){t&&Array.isArray(t)&&(e.shippersUrlsInternal=t)}function F(e,t){t&&Array.isArray(t)&&(e.openCollectorLogSources=t)}a("a79d"),a("13d5");var R=a("a925"),U=a("bf21"),M={"en-gb":U,"en-us":U};r["a"].use(R["a"]);const j=new R["a"]({locale:"en-us",fallbackLocale:"en-us",messages:M});var V=({app:e})=>{e.i18n=j};function H({commit:e},t){pe({apiUrl:"/auth/Login",commit:e,targetCommitName:"updateJwtToken",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",silent:!0,caller:t&&t.caller?t.caller:this._vm,apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function z({commit:e},t){e("updateJwtToken",{token:""}),e("getOpenCollectors",[]),e("getPipelines",[])}function Z({state:e,commit:t}){t("getOpenCollectors",[])}function G({state:e,commit:t},a){ue({apiUrl:"/config/GetCollectors",dataLabel:"Collectors",countDataLabel:!0,apiHeaders:{authorization:"Bearer "+e.jwtToken},commit:t,targetCommitName:"getOpenCollectors",loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}function W({state:e,commit:t},a){if(a&&a.openCollector){const n=Object.assign({},a.openCollector);e.openCollectors.filter((e=>e.uid===n.uid)).length>0?t("updateOpenCollector",n):((!n.uid||n.uid&&0===n.uid.length)&&(n.uid=Object(q["a"])()),t("addOpenCollector",n)),a.pushToApi&&!0===a.pushToApi&&e.openCollectors.filter((e=>e.uid===n.uid)).length>0&&pe({apiUrl:"/config/UpdateCollector",dataLabel:"Collector",apiCallParams:e.openCollectors.find((e=>e.uid===n.uid)),apiHeaders:{authorization:"Bearer "+e.jwtToken},loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}}function J({state:e,commit:t},a){if(a&&a.openCollector){const n=Object.assign({},a.openCollector);e.openCollectors.filter((e=>e.uid===n.uid)).length>0&&t("deleteOpenCollector",n),a.pushToApi&&!0===a.pushToApi&&n.uid&&n.uid.length&&pe({apiUrl:"/config/DeleteCollector",dataLabel:"Collector",apiCallParams:{uid:n.uid},apiHeaders:{authorization:"Bearer "+e.jwtToken},loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}}function $({state:e},t){ue({apiUrl:"/oc/CheckOCVersion",apiHeaders:{authorization:"Bearer "+e.jwtToken},targetObjectName:t&&t.targetObjectName?t.targetObjectName:"",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,silent:!0,caller:t&&t.caller?t.caller:this._vm,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function K({state:e},t){ue({apiUrl:"/oc/CheckOSVersion",apiHeaders:{authorization:"Bearer "+e.jwtToken},targetObjectName:t&&t.targetObjectName?t.targetObjectName:"",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,silent:!0,caller:t&&t.caller?t.caller:this._vm,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function X({state:e},t){ue({apiUrl:"/oc/CheckFilebeatVersion",apiHeaders:{authorization:"Bearer "+e.jwtToken},targetObjectName:t&&t.targetObjectName?t.targetObjectName:"",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,silent:!0,caller:t&&t.caller?t.caller:this._vm,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function Y({state:e},t){ue({apiUrl:"/oc/CheckJsBeatVersion",apiHeaders:{authorization:"Bearer "+e.jwtToken},targetObjectName:t&&t.targetObjectName?t.targetObjectName:"",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,silent:!0,caller:t&&t.caller?t.caller:this._vm,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function Q({state:e},t){ue({apiUrl:"/oc/CheckOpenCollectorAndBeatsVersions",apiHeaders:{authorization:"Bearer "+e.jwtToken},targetObjectName:t&&t.targetObjectName?t.targetObjectName:"",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,silent:!0,caller:t&&t.caller?t.caller:this._vm,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function ee({state:e,commit:t}){t("getPipelines",[])}function te({state:e,commit:t},a){ue({apiUrl:"/config/GetPipelines",dataLabel:"Pipelines",countDataLabel:!0,commit:t,targetCommitName:"getPipelines",apiHeaders:{authorization:"Bearer "+e.jwtToken},loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}function ae({state:e,commit:t},a){if(a&&a.pipeline){const n=Object.assign({},a.pipeline);e.pipelines.filter((e=>e.uid===n.uid)).length>0?t("updatePipeline",n):((!n.uid||n.uid&&0===n.uid.length)&&(n.uid=Object(q["a"])()),t("addPipeline",n)),null==a.pushToApi||a.pushToApi&&!1===a.pushToApi||e.pipelines.filter((e=>e.uid===n.uid)).length>0&&pe({apiUrl:"/config/UpdatePipeline",dataLabel:"Pipeline",apiCallParams:e.pipelines.find((e=>e.uid===n.uid)),apiHeaders:{authorization:"Bearer "+e.jwtToken},loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}}function ne({state:e,commit:t},a){if(a&&a.pipeline){const n=Object.assign({},a.pipeline);e.pipelines.filter((e=>e.uid===n.uid)).length>0&&t("deletePipeline",n),a.pushToApi&&!0===a.pushToApi&&n.uid&&n.uid.length&&pe({apiUrl:"/config/DeletePipeline",dataLabel:"Pipeline",apiCallParams:{uid:n.uid},apiHeaders:{authorization:"Bearer "+e.jwtToken},loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}}function oe({state:e,commit:t},a){0===e.shippersUrlsInternal.length&&(console.log("☁️ Downloading Shippers' details and URLs..."),fetch(this._vm.globalConstants.baseUrl.shippersUrls,{credentials:"omit",referrerPolicy:"no-referrer"}).then((e=>{if(!e.ok)throw new Error("Network response was not ok.");return e.json()})).then((e=>{if(!e||!Array.isArray(e))throw new Error("Returned data wasn't a proper JSON array.");t("loadShippersUrls",e),console.log("✔️ [API SUCCESS] Succesfully loaded "+e.length+" Shippers' details and URLs.")})).catch((e=>{console.log("⚠️ [API ERROR] Loading error: "+e.message)})))}function ie({state:e,commit:t}){t("getOpenCollectorLogSources",[])}function re({state:e,commit:t},a){ue({apiUrl:"/logrhythmCore/GetOpenCollectorLogSourcesList",dataLabel:"Open Collector Log Sources",countDataLabel:!0,apiHeaders:{authorization:"Bearer "+e.jwtToken},commit:t,targetCommitName:"getOpenCollectorLogSources",loadingVariableName:a&&a.loadingVariableName?a.loadingVariableName:"",silent:!1,caller:a&&a.caller?a.caller:this._vm,debug:!1})}function le({state:e,dispatch:t},a){if(a&&a.openCollector&&a.openCollector.pipelines&&Array.isArray(a.openCollector.pipelines)&&a.pipelineUid&&a.pipelineUid.length){const e=Object.assign({},a.openCollector,{pipelines:a.openCollector.pipelines.filter((e=>e.uid!==a.pipelineUid))}),n={pushToApi:a.pushToApi,caller:a.caller,openCollector:e};return t("upsertOpenCollector",n)}}function se({state:e},t){t&&t.apiUrl&&t.apiUrl.length&&pe({apiUrl:t.apiUrl,apiHeaders:{authorization:"Bearer "+e.jwtToken},dataLabel:t&&t.dataLabel?t.dataLabel:void 0,countDataLabel:!1,silent:!t||!t.silent||t.silent,caller:t&&t.caller?t.caller:this._vm,apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function de({state:e},t){pe({apiUrl:"/oc/ObfuscateSecret",apiHeaders:{authorization:"Bearer "+e.jwtToken},targetObjectName:t&&t.targetObjectName?t.targetObjectName:"",loadingVariableName:t&&t.loadingVariableName?t.loadingVariableName:"",silent:!0,caller:t&&t.caller?t.caller:this._vm,apiCallParams:t&&t.apiCallParams?t.apiCallParams:void 0,onSuccessCallBack:t&&t.onSuccessCallBack?t.onSuccessCallBack:null,onErrorCallBack:t&&t.onErrorCallBack?t.onErrorCallBack:null,debug:!(!t||!t.debug)&&t.debug})}function ue(e={apiUrl:"",isUrlExternal:!1,dataLabel:"",countDataLabel:!1,targetObjectName:"",commit:null,targetCommitName:"",loadingVariableName:"",apiCallParams:{},apiHeaders:{},silent:!1,logToConsole:!0,caller:this,debug:!1,onSuccessCallBack:null,onErrorCallBack:null}){let t="",a="",n=!1,o=null,i={};"undefined"===typeof e.apiUrl&&(e.apiUrl=""),"undefined"===typeof e.isUrlExternal&&(e.isUrlExternal=!1),"undefined"===typeof e.dataLabel&&(e.dataLabel=""),"undefined"===typeof e.countDataLabel&&(e.countDataLabel=!1),"undefined"===typeof e.targetObjectName&&(e.targetObjectName=""),"undefined"===typeof e.commit&&(e.commit=null),"undefined"===typeof e.targetCommitName&&(e.targetCommitName=""),"undefined"===typeof e.loadingVariableName&&(e.loadingVariableName=""),"undefined"===typeof e.apiCallParams&&(e.apiCallParams={}),"undefined"===typeof e.apiHeaders&&(e.apiHeaders={}),"undefined"===typeof e.silent&&(e.silent=!1),"undefined"===typeof e.logToConsole&&(e.logToConsole=!0),"undefined"===typeof e.caller&&(e.caller=this),"undefined"===typeof e.debug&&(e.debug=!1),"undefined"===typeof e.onSuccessCallBack&&(e.onSuccessCallBack=null),"undefined"===typeof e.onErrorCallBack&&(e.onErrorCallBack=null),e.debug&&console.log("getDataFromSite -- BEGIN"),!e.silent&&e.caller&&e.caller.$q&&(o=e.caller.$q.notify({icon:"cloud_download",message:j.t("Downloading")+" "+e.dataLabel+"...",type:"ongoing"})),e.logToConsole&&console.log("☁️ "+j.t("Downloading")+" "+e.dataLabel+"..."),e.loadingVariableName.length&&(e.caller[e.loadingVariableName]=!0),e.debug&&console.log("getDataFromSite -- GET"),e.caller.$axios.get(e.isUrlExternal?e.apiUrl:e.caller.globalConstants.baseUrl.api+e.apiUrl,{params:e.apiCallParams,headers:e.apiHeaders}).then((function(o){e.debug&&console.log("getDataFromSite -- Then"),e.debug&&console.log(o),i=o,o.data&&o.data.payload?(e.targetObjectName.length&&(e.caller[e.targetObjectName]=o.data.payload),"function"===typeof e.commit&&e.targetCommitName.length&&e.commit(e.targetCommitName,o.data.payload),o.data.errors&&Array.isArray(o.data.errors)&&o.data.errors.length>0?(n=!0,t=j.t("Error querying persistance layer.")):(n=!1,t=e.countDataLabel&&Array.isArray(o.data.payload)?j.t("Succesfully loaded")+" "+o.data.payload.length+" "+e.dataLabel+".":j.t("Succesfully loaded")+" "+e.dataLabel+".")):(t=j.t("Invalid response")+".",a=j.t('No "response" object in AJAX response'),n=!0)})).catch((function(a){e.debug&&console.log("getDataFromSite -- Catch"),t=j.t("Loading error")+": "+("object"!==typeof a?a:JSON.stringify(a)),n=!0})).finally((()=>{e.debug&&console.log("getDataFromSite -- Finally"),n?(e.logToConsole&&console.log("⚠️ "+j.t("[API ERROR]")+" "+t),!e.silent&&o&&o({type:"negative",color:"negative",icon:"report_problem",message:t,caption:a,timeout:4e3}),"function"===typeof e.onErrorCallBack&&(e.debug&&console.log("getDataFromSite -- onErrorCallBack"),e.onErrorCallBack({data:i&&i.data?i.data:void 0,success:!1,params:e,messageForLogAndPopup:t}))):(e.logToConsole&&console.log("✔️ "+j.t("[API SUCCESS]")+" "+t),!e.silent&&o&&o({type:"positive",color:"positive",icon:"check",message:t,caption:a}),"function"===typeof e.onSuccessCallBack&&(e.debug&&console.log("getDataFromSite -- onSuccessCallBack"),e.onSuccessCallBack({data:i&&i.data?i.data:void 0,success:!0,params:e,messageForLogAndPopup:t}))),e.loadingVariableName.length&&(e.caller[e.loadingVariableName]=!1),e.debug&&console.log("getDataFromSite -- END")}))}function pe(e={apiUrl:"",isUrlExternal:!1,dataLabel:"",countDataLabel:!1,targetObjectName:"",commit:null,targetCommitName:"",loadingVariableName:"",apiCallParams:{},apiHeaders:{},silent:!1,logToConsole:!0,caller:this,debug:!1,onSuccessCallBack:null,onErrorCallBack:null}){let t="",a="",n=!1,o=null,i={};"undefined"===typeof e.apiUrl&&(e.apiUrl=""),"undefined"===typeof e.isUrlExternal&&(e.isUrlExternal=!1),"undefined"===typeof e.dataLabel&&(e.dataLabel=""),"undefined"===typeof e.countDataLabel&&(e.countDataLabel=!1),"undefined"===typeof e.targetObjectName&&(e.targetObjectName=""),"undefined"===typeof e.commit&&(e.commit=null),"undefined"===typeof e.targetCommitName&&(e.targetCommitName=""),"undefined"===typeof e.loadingVariableName&&(e.loadingVariableName=""),"undefined"===typeof e.apiCallParams&&(e.apiCallParams={}),"undefined"===typeof e.apiHeaders&&(e.apiHeaders={}),"undefined"===typeof e.silent&&(e.silent=!1),"undefined"===typeof e.logToConsole&&(e.logToConsole=!0),"undefined"===typeof e.caller&&(e.caller=this),"undefined"===typeof e.debug&&(e.debug=!1),"undefined"===typeof e.onSuccessCallBack&&(e.onSuccessCallBack=null),"undefined"===typeof e.onErrorCallBack&&(e.onErrorCallBack=null),e.debug&&console.log("postDataToSite -- BEGIN"),!e.silent&&e.caller&&e.caller.$q&&(o=e.caller.$q.notify({icon:"cloud_upload",message:j.t("Uploading")+" "+e.dataLabel+"...",type:"ongoing"})),e.logToConsole&&console.log("☁️ "+j.t("Uploading")+" "+e.dataLabel+"..."),e.loadingVariableName.length&&(e.caller[e.loadingVariableName]=!0),e.debug&&console.log("postDataToSite -- POST"),e.caller.$axios.post(e.isUrlExternal?e.apiUrl:e.caller.globalConstants.baseUrl.api+e.apiUrl,e.apiCallParams,{headers:e.apiHeaders}).then((function(o){e.debug&&console.log("postDataToSite -- Then"),e.debug&&console.log(o),i=o,o.data&&o.data.payload?(e.targetObjectName.length&&(e.caller[e.targetObjectName]=o.data.payload,a=e.countDataLabel&&Array.isArray(o.data.payload)?j.t("Succesfully loaded")+" "+o.data.payload.length+" "+e.dataLabel+".":j.t("Succesfully loaded")+" "+e.dataLabel+"."),"function"===typeof e.commit&&e.targetCommitName.length&&e.commit(e.targetCommitName,o.data.payload),o.data.errors&&Array.isArray(o.data.errors)&&o.data.errors.length>0?(n=!0,t=j.t("Error updating persistance layer.")):(n=!1,t=j.t("Succesfully updated")+" "+e.dataLabel+".")):(n=!0,t=j.t("Invalid response")+". "+j.t('No "response" object in AJAX response'))})).catch((function(a){e.debug&&console.log("postDataToSite -- Catch"),t=j.t("Update error")+": "+("object"!==typeof a?a:JSON.stringify(a)),n=!0})).finally((()=>{e.debug&&console.log("postDataToSite -- Finally"),n?(e.logToConsole&&console.log("⚠️ "+j.t("[API ERROR]")+" "+t+" // "+a),!e.silent&&o&&o({type:"negative",color:"negative",icon:"report_problem",message:t,caption:a,timeout:4e3}),"function"===typeof e.onErrorCallBack&&(e.debug&&console.log("postDataToSite -- onErrorCallBack"),e.onErrorCallBack({data:i&&i.data?i.data:void 0,success:!1,params:e,messageForLogAndPopup:t,captionForLogAndPopup:a}))):(e.logToConsole&&console.log("✔️ "+j.t("[API SUCCESS]")+" "+t+" // "+a),!e.silent&&o&&o({type:"positive",color:"positive",icon:"check",message:t,caption:a}),"function"===typeof e.onSuccessCallBack&&(e.debug&&console.log("postDataToSite -- onSuccessCallBack"),e.onSuccessCallBack({data:i&&i.data?i.data:void 0,success:!0,params:e,messageForLogAndPopup:t,captionForLogAndPopup:a}))),e.loadingVariableName.length&&(e.caller[e.loadingVariableName]=!1),e.debug&&console.log("postDataToSite -- END")}))}var ce={namespaced:!0,getters:n,mutations:o,actions:i,state:v};r["a"].use(y["a"]);const he=new y["a"].Store({modules:{mainStore:ce},strict:!1});var me=function(){return he},fe=a("8c4f"),ge=(a("ddb0"),a("9224"));function be(e,t,a){const n=he&&he.state&&he.state.mainStore&&he.state.mainStore.jwtToken?he.state.mainStore.jwtToken:"";n&&n.length?a():a("/Login")}function _e(e,t,a){let n="";e.matched&&Array.isArray(e.matched)&&e.matched.forEach((e=>{e.meta&&e.meta.title&&e.meta.title.length&&(n=e.meta.title)})),n.length?document.title=ge["a"]+" - "+n:document.title=ge["a"],a()}const ye=[{path:"/",meta:{title:"Login"},component:()=>Promise.all([a.e(0),a.e(2)]).then(a.bind(null,"ba2f")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(4)]).then(a.bind(null,"aeab"))}]},{path:"/Welcome",meta:{title:"Welcome"},component:()=>Promise.all([a.e(0),a.e(1)]).then(a.bind(null,"713b")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(15)]).then(a.bind(null,"8b24"))}],beforeEnter:be},{path:"/Login",meta:{title:"Login"},component:()=>Promise.all([a.e(0),a.e(2)]).then(a.bind(null,"ba2f")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(4)]).then(a.bind(null,"aeab"))}]},{path:"/Logout",meta:{title:"Logout"},component:()=>Promise.all([a.e(0),a.e(2)]).then(a.bind(null,"ba2f")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(11)]).then(a.bind(null,"3780"))}]},{path:"/Settings",meta:{title:"Settings"},component:()=>Promise.all([a.e(0),a.e(1)]).then(a.bind(null,"713b")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(13)]).then(a.bind(null,"a445"))}]},{path:"/OpenCollectors",meta:{title:"OpenCollectors"},component:()=>Promise.all([a.e(0),a.e(1)]).then(a.bind(null,"713b")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(9)]).then(a.bind(null,"e956"))},{path:":openCollectorUid/View",meta:{title:"OpenCollector - View"},component:()=>Promise.all([a.e(0),a.e(12)]).then(a.bind(null,"3e6e"))}],beforeEnter:be},{path:"/Pipelines",meta:{title:"Pipelines"},component:()=>Promise.all([a.e(0),a.e(1)]).then(a.bind(null,"713b")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(10)]).then(a.bind(null,"80b0"))},{path:":pipelineUid/Properties",meta:{title:"Pipeline - Properties"},component:()=>Promise.all([a.e(0),a.e(8)]).then(a.bind(null,"d184"))},{path:":pipelineUid/Collection/Edit",meta:{title:"Pipeline - Collection"},component:()=>Promise.all([a.e(0),a.e(6)]).then(a.bind(null,"9a7e"))},{path:":pipelineUid/Mapping/Edit",meta:{title:"Pipeline - Field Mapping"},component:()=>Promise.all([a.e(0),a.e(7)]).then(a.bind(null,"f994"))},{path:":pipelineUid/Deployments/:openCollectorUid/Edit",meta:{title:"Pipeline - Deployments"},component:()=>Promise.all([a.e(0),a.e(3)]).then(a.bind(null,"02cd"))},{path:":pipelineUid/Deployments/Edit",meta:{title:"Pipeline - Deployments"},component:()=>Promise.all([a.e(0),a.e(3)]).then(a.bind(null,"02cd"))}],beforeEnter:be},{path:"*",meta:{title:"Oops..."},component:()=>Promise.all([a.e(0),a.e(1)]).then(a.bind(null,"713b")),children:[{path:"",component:()=>Promise.all([a.e(0),a.e(14)]).then(a.bind(null,"e51e"))}],beforeEnter:be}];r["a"].use(fe["a"]);var ve=function(){const e=new fe["a"]({scrollBehavior:()=>({x:0,y:0}),routes:ye,mode:"hash",base:""});return e.beforeEach(_e),e},we=async function(){const e="function"===typeof me?await me({Vue:r["a"]}):me,t="function"===typeof ve?await ve({Vue:r["a"],store:e}):ve;e.$router=t;const a={router:t,store:e,render:e=>e(_),el:"#q-app"};return{app:a,store:e,router:t}},Te=a("bc3a"),Se=a.n(Te);r["a"].prototype.$axios=Se.a,r["a"].prototype.globalConstants={baseUrl:{website:"",api:"/API/v1",socket:"",shippersUrls:"https://raw.githubusercontent.com/TonyMasse/EZ-Cloud/main/resources/shippers_url.json"}},r["a"].prototype.globalConstants.baseUrl.website=localStorage.getItem("settings.ezBackend.url.website")||r["a"].prototype.globalConstants.baseUrl.website,r["a"].prototype.globalConstants.baseUrl.api=localStorage.getItem("settings.ezBackend.url.api")||r["a"].prototype.globalConstants.baseUrl.api,r["a"].prototype.globalConstants.baseUrl.socket=localStorage.getItem("settings.ezBackend.url.socket")||r["a"].prototype.globalConstants.baseUrl.socket;var Ce=a("8e27"),Ae=a.n(Ce),qe=async({Vue:e})=>{e.prototype.$socket=Ae()(e.prototype.globalConstants.baseUrl.socket,{auth:{token:""}})};p["a"].setDefaults({position:"bottom-right",timeout:2500,textColor:"white",actions:[{icon:"close",color:"white"}]});var Ie=a("4b46");const Pe="";async function xe(){const{app:e,store:t,router:a}=await we();let n=!1;const o=e=>{n=!0;const t=Object(e)===e?a.resolve(e).route.fullPath:e;window.location.href=t},i=window.location.href.replace(window.location.origin,""),l=[V,void 0,void 0,qe,void 0,Ie["default"]];for(let d=0;!1===n&&d<l.length;d++)if("function"===typeof l[d])try{await l[d]({app:e,router:a,store:t,Vue:r["a"],ssrContext:null,redirect:o,urlPath:i,publicPath:Pe})}catch(s){return s&&s.url?void(window.location.href=s.url):void console.error("[Quasar] boot error:",s)}!0!==n&&new r["a"](e)}xe()},"31cd":function(e,t,a){},"76ad":function(e){e.exports=JSON.parse('[{"version":"1.1","name":"jsBeat + NodeJS","description":"jsBeat-1.1.4 + node-v14.17.1-linux-x64","filename":"jsBeat-1.1.4 + node-v14.17.1-linux-x64","jsBeat":{"url":"https://github.com/TonyMasse/jsBeat/releases/download/v1.1.4/jsBeat-1.1.4.tgz","sha256":"42b77a3f470871d82693709c8d0bb0137f2eeeb17bc9b886bdf5f981a515157e","folderName":"jsBeat-1.1.4"},"nodeJs":{"url":"https://nodejs.org/download/release/v14.17.1/node-v14.17.1-linux-x64.tar.gz","sha256":"4781b162129b19bdb3a7010cab12d06fc7c89421ea3fda03346ed17f09ceacd6","folderName":"node-v14.17.1-linux-x64"}},{"version":"1.1","name":"jsBeat","description":"jsBeat-1.1.4","filename":"jsBeat-1.1.4","jsBeat":{"url":"https://github.com/TonyMasse/jsBeat/releases/download/v1.1.4/jsBeat-1.1.4.tgz","sha256":"42b77a3f470871d82693709c8d0bb0137f2eeeb17bc9b886bdf5f981a515157e","folderName":"jsBeat-1.1.4"}}]')},9224:function(e){e.exports=JSON.parse('{"b":"0.7.0","a":"EZ Cloud Client"}')},bf21:function(e){e.exports=JSON.parse('{"Sign in to EZ Cloud":"Sign in to EZ Cloud","Switch between Light and Dark mode":"Switch between Light and Dark mode","Username":"Username","Username is required":"Username is required","Password":"Password","Authentication failed.":"Authentication failed.","Login":"Login","Save settings to local web browser.":"Save settings to local web browser.","New Pipeline Details":"New Pipeline Details","Pipeline Details":"Pipeline Details","Add new Pipeline":"Add new Pipeline","Cancel":"Cancel","Open this Pipeline":"Open this Pipeline","Delete Pipeline":"Delete Pipeline","New OpenCollector":"New OpenCollector","OpenCollector Details":"OpenCollector Details","Add new OpenCollector":"Add new OpenCollector","Update OpenCollector":"Update OpenCollector","Open this OpenCollector":"Open this OpenCollector","Edit OpenCollector details":"Edit OpenCollector details","Delete OpenCollector":"Delete OpenCollector","Refresh stats for this OpenCollector":"Refresh stats for this OpenCollector","OpenCollector name cannot be empty":"OpenCollector name cannot be empty","OpenCollector Host name cannot be empty":"OpenCollector Host name cannot be empty","OpenCollector port cannot be empty":"OpenCollector port cannot be empty","OpenCollector Name":"OpenCollector Name","Host name":"Host name","SSH Port":"SSH Port","SSH User name":"SSH User name","SSH Password":"SSH Password","SSH Private Key":"SSH Private Key","Downloading":"Downloading","Succesfully loaded":"Succesfully loaded","[API SUCCESS]":"[API SUCCESS]","[API ERROR]":"[API ERROR]","Error querying persistance layer.":"Error querying persistance layer.","Invalid response":"Invalid response","No \\"response\\" object in AJAX response":"No \\"response\\" object in AJAX response","Loading error":"Loading error","Uploading":"Uploading","Succesfully updated":"Succesfully updated","Update error":"Update error","Error updating persistance layer.":"Error updating persistance layer.","Switch to this Collection Method.":"Switch to this Collection Method.","Downloading Input Configuration file...":"Downloading Input Configuration file...","Input Configuration file downloaded":"Input Configuration file downloaded","Problem while downloading Input Configuration file:":"Problem while downloading Input Configuration file:","Edit Pipeline details":"Edit Pipeline details","Update Pipeline":"Update Pipeline","Pipeline name cannot be empty":"Pipeline name cannot be empty","Edit Deployment details":"Edit Deployment details","Delete Deployment":"Delete Deployment","Deploy":"Deploy","Un-deploy":"Un-deploy","This Stream has already been deployed on this OpenCollector.":"This Stream has already been deployed on this OpenCollector.","This will remove the configuration from the Shipper on the OpenCollector, but will leave the OpenCollector\'s Pipeline and SIEM Log Source as they are.":"This will remove the configuration from the Shipper on the OpenCollector, but will leave the OpenCollector\'s Pipeline and SIEM Log Source as they are."}')}});