[{"data":1,"prerenderedAt":49},["ShallowReactive",2],{"integration-node-red-contrib-flow-manager\u002F":3},{"_id":4,"categories":5,"author":8,"description":10,"npmOwners":11,"npmScope":13,"name":4,"ffCertified":14,"downloads":15,"version":17,"updatedAt":18,"maintainers":19,"homepage":22,"bugs":23,"repository":25,"time":28,"lastUpdated":18,"created":29,"license":47,"readme":48},"node-red-contrib-flow-manager",[6,7],"catalogue_tools","catalogue",{"name":9},"monogoto.io","Flow Manager separates your flow json to multiple files",[12],"alonamonogoto",null,false,{"week":16},2714,"0.7.4","2022-10-11T15:35:48.252Z",[20],{"name":12,"email":21},"alon@monogoto.io","https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager#readme",{"url":24},"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002Fissues",{"type":26,"url":27},"git","git+https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager.git",{"created":29,"0.3.0":30,"modified":18,"0.3.1":31,"0.4.0":32,"0.4.1":33,"0.4.2":34,"0.4.3":35,"0.4.4":36,"0.4.5":37,"0.5.0":38,"0.5.1":39,"0.5.2":40,"0.6.0":41,"0.7.0":42,"0.7.1":43,"0.7.2":44,"0.7.3":45,"0.7.4":46},"2020-02-26T13:02:13.612Z","2020-02-26T13:02:13.705Z","2020-02-27T10:40:21.814Z","2020-03-12T10:57:02.358Z","2020-06-18T13:22:18.744Z","2020-06-19T09:55:24.011Z","2020-06-20T11:51:18.650Z","2020-06-20T12:06:39.532Z","2020-06-21T11:45:12.500Z","2020-06-22T12:24:13.647Z","2020-06-22T12:32:01.738Z","2020-08-05T13:06:11.553Z","2020-08-09T13:18:57.992Z","2020-08-16T15:42:20.678Z","2020-08-20T15:46:10.929Z","2020-11-22T11:09:06.748Z","2022-09-11T17:16:23.897Z","2022-10-11T15:35:48.154Z","MIT","\u003Ch2 id=\"flow-manager-module-for-node-red\">\u003Ca class=\"header-anchor\" href=\"#flow-manager-module-for-node-red\">\u003Cem>Flow Manager\u003C\u002Fem> module for node-red\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Flow Manager separates your flow json to multiple files\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fblob\u002Fmaster\u002FCHANGELOG.md\">View change log\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3 id=\"installation\">\u003Ca class=\"header-anchor\" href=\"#installation\">Installation\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>This assumes you have \u003Ca href=\"https:\u002F\u002Fnodered.org\">Node-RED\u003C\u002Fa> already installed and working, if you need to install Node-RED see \u003Ca href=\"https:\u002F\u002Fnodered.org\u002Fdocs\u002Fgetting-started\u002Finstallation\">here\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>NOTE:\u003C\u002Fstrong> This requires \u003Ca href=\"https:\u002F\u002Fnodejs.org\">Node.js\u003C\u002Fa> v14+\u003C\u002Fp>\n\u003Cp>Install via Node-RED Manage Palette\u003C\u002Fp>\n\u003Cpre>\u003Ccode>node-red-contrib-flow-manager\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Install via npm\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">$ cd ~\u002F.node-red\n$ npm install node-red-contrib-flow-manager\n# Restart node-red\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"usage\">\u003Ca class=\"header-anchor\" href=\"#usage\">Usage\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>After installation of this module, during first boot only, A migration process will initiate.\u003C\u002Fp>\n\u003Cp>During migration, your main flow json file will be split to multiple files which will store your node information.\u003Cbr \u002F>\nIt is advised to \u003Cstrong>back up your main flow json\u003C\u002Fstrong>, before running this module for the first time.\u003C\u002Fp>\n\u003Cp>Node-RED startup process after migration:\u003Cbr \u002F>\nAll of your flow files are combined into a single JSON object, which is then loaded and served as your main flow object.\u003C\u002Fp>\n\u003Cp>For that reason, it is advised to add your \"fat\" flow json file to .gitignore because from that moment, the flows are saved separately.\u003C\u002Fp>\n\u003Cp>The nodes will be stored in the following subdirectories of your Node-RED path as such:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>\u002Fflows\u002F\u003C\u002Fcode>\u003Cstrong>\u003Ccode>flow name\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fsubflows\u002F\u003C\u002Fcode>\u003Cstrong>\u003Ccode>subflow name\u003C\u002Fcode>\u003C\u002Fstrong>\u003C\u002Fli>\n\u003Cli>\u003Ccode>\u002Fconfig-nodes.json\u003C\u002Fcode> (global config nodes will be stored here)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>It's a good idea to add these paths to your version control system.\u003C\u002Fp>\n\u003Ch4>\u003Ca class=\"header-anchor\" href=\"#\">\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fraw\u002F0.7.1\u002Fimg\u002Ffilter_flows_button.png\" alt=\"Filter Flows\" \u002F>\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Allows selecting which flows Node-RED will load, and which will be ignored and not loaded, \u003Cstrong>not only in Node-RED's UI, also in it's NodeJS process.\u003C\u002Fstrong> \u003Cbr \u002F>\u003C\u002Fli>\n\u003Cli>Unselected flows are NOT deleted, only \"ignored\" until you select them again using \u003Ccode>Filter Flows\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Filtering configuration is stored in \u003Ccode>flow-manager-cfg.json\u003C\u002Fcode> file under your Node-RED path.\u003C\u002Fli>\n\u003Cli>if \u003Ccode>flow-manager-cfg.json\u003C\u002Fcode> file does not exist, or exists but malformed, or contains an empty JSON array, then all flows will be loaded and no filtering is done.\u003C\u002Fli>\n\u003Cli>\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fraw\u002F0.7.1\u002Fimg\u002Ffilter_flows_popup.png\" alt=\"Filter Flows Popup\" \u002F>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"envnodes\">\u003Ca class=\"header-anchor\" href=\"#envnodes\">envnodes\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>envnodes allows configuration of nodes using an external source and custom logic.\u003Cbr \u002F>\nexample:\ncreate \"envnodes\u002FsomeName.jsonata\" in your Node-RED project directory and put these contents:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json5\">  (\n     $config := require(basePath &amp; \"\u002FsomeConfig.json\");\n     {\n       \u002F* mqtt config node *\u002F\n       \"21bcf36a.891e4d\": {\n          \"broker\": $config.mqtt.broker,\n          \"port\": $config.mqtt.port\n       },\n       \"name:MyInject\": {\n          \"topic\": \"niceTopic\"\n       }\n     };\n  )\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The result would be that your mqtt config node will use values from an external configuration file (which is useful in some cases),\nAnd a topic value will be inserted to an inject node matched with the given name.\u003C\u002Fp>\n\u003Cp>Note \u003Ccode>basePath\u003C\u002Fcode> is the path to your Node-RED directory.\u003Cbr \u002F>\nWhen using Node-RED's \"project mode\", the value is the project folder path.\u003C\u002Fp>\n\u003Cp>Supported envnode file ext: .jsonata .js .json\nwhen using .js you can either module.exports = {...} the object directly, or use a function\u002Fasync function (for example to read external file) and return an object.\u003Cbr \u002F>\njs example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-javascript\">const fs = require('fs-extra');\n\nmodule.exports = async function() {\n    const configTopic = await fs.readJson('.\u002Fconfig').topic;\n    return {\n        \"name:MyInject\": {\n            \"topic\": configTopic\n        },\n        \"cff2a203.8158a\": {\n            \"someProperty\": \"myProperty\"\n        }\n    }\n}\n\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Attempting to change any envnode controlled property via Node-RED UI\u002FAdminAPI will be cancelled (with a warning popup) to keep original values defined in your envnodes configuration.\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fraw\u002F0.7.1\u002Fimg\u002Fenvnodes_warning.png\" alt=\"EnvNodes Warning\" \u002F>\u003C\u002Fp>\n\u003Ch3 id=\"remote-deploy\">\u003Ca class=\"header-anchor\" href=\"#remote-deploy\">Remote Deploy\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fraw\u002F0.7.1\u002Fimg\u002Fremote_deploy_button.png\" alt=\"Remote Deploy Button\" \u002F>\u003C\u002Fp>\n\u003Cp>If you work in a server-client environment, where you work locally on your flows, and once in a while need to push your local changes to a remote process running Node-RED.\u003C\u002Fp>\n\u003Cp>Do the following to enable Remote Deployment feature:\u003Cbr \u002F>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Add remote definitions to \u003Ccode>flow-manager-cfg.json\u003C\u002Fcode> (you can add as many as you want, choose any name you wish for each remote)\n\u003Cul>\n\u003Cli>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"filter\": [],\n  \"fileFormat\": \"json\",\n  \"remoteDeploy\": {\n    \"remotes\": [\n      {\n        \"name\": \"Production\",\n        \"nrAddress\": \"http:\u002F\u002FyourAddress:1881\"\n      },\n      {\n        \"name\": \"Staging\",\n        \"nrAddress\": \"http:\u002F\u002FyourOtherAddress:1881\"\n      }\n    ]\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Restart Node-RED\u003C\u002Fli>\n\u003Cli>You should see the new \"Remote Deploy\" button on top of the Node-RED UI.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fraw\u002F0.7.1\u002Fimg\u002Fremote_deploy_select_remote.png\" alt=\"Remote Deploy Remote Selection\" \u002F>\u003C\u002Fp>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002Fmonogoto.io\u002Fnode-red-contrib-flow-manager\u002F-\u002Fraw\u002F0.7.1\u002Fimg\u002Fremote_diff.png\" alt=\"Remote Deploy Diff Tool\" \u002F>\u003C\u002Fp>\n\u003Ch3 id=\"yaml-flow-file-format\">\u003Ca class=\"header-anchor\" href=\"#yaml-flow-file-format\">YAML flow file format\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>You can configure flow-manager to load\u002Fsave flow files in YAML format instead oj JSON, by modifying file \u003Ccode>flow-manager-cfg.json\u003C\u002Fcode> as such:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  ...\n  \"fileFormat\": \"yaml\"\n  ...\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>The advantage is the code within function node becomes easier to read when inspecting the flow file itself.\u003Cbr \u002F>\nSee comparison below\u003C\u002Fp>\n\u003Ch4 id=\"yaml\">\u003Ca class=\"header-anchor\" href=\"#yaml\">YAML\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cpre>\u003Ccode class=\"language-yaml\">- id: 493f0b3.b3b48f4\n  type: function\n  z: 70dd6be0.e35274\n  name: 'SomeFuncNode'\n  func: |-\n      const str = \"hello\";\n      console.log(str + ' world');\n      msg.payload = 'test';\n      return msg;\n  outputs: 1\n  noerr: 0\n  x: 580\n  'y': 40\n  wires:\n    - []\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4 id=\"json\">\u003Ca class=\"header-anchor\" href=\"#json\">JSON\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n    \"id\": \"493f0b3.b3b48f4\",\n    \"type\": \"function\",\n    \"z\": \"70dd6be0.e35274\",\n    \"name\": \"SomeFuncNode\",\n    \"func\": \"const str = \\\"hello\\\";\\nconsole.log(str + ' world');\\nmsg.payload = 'test';\\nreturn msg;\",\n    \"outputs\": 1,\n    \"noerr\": 0,\n    \"x\": 580,\n    \"y\": 40,\n    \"wires\": [\n        []\n    ]\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3 id=\"flow-manager-restful-api\">\u003Ca class=\"header-anchor\" href=\"#flow-manager-restful-api\">flow-manager RESTful API\u003C\u002Fa>\u003C\u002Fh3>\n\u003Ch4 id=\"get-all-flow-names\">\u003Ca class=\"header-anchor\" href=\"#get-all-flow-names\">Get all flow names\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --request GET \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fflow-names\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Response:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">  [\"Flow 1.json\",\"Flow 2.json\",\"Flow 3.json\",\"Flow 4.json\"]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4 id=\"get-flow-manager-cfgjson-contents\">\u003Ca class=\"header-anchor\" href=\"#get-flow-manager-cfgjson-contents\">Get flow-manager-cfg.json contents\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --request GET \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fcfg\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4 id=\"get-change-filter-flows\">\u003Ca class=\"header-anchor\" href=\"#get-change-filter-flows\">get \u002F change filter flows\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>get\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --request GET \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Ffilter-flows\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>change\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --header \"Content-Type: application\u002Fjson\" \\\n  --request PUT \\\n  --data '[\"Flow 1\", \"Flow 2\"]' \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Ffilter-flows\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4 id=\"modify-flow-files-add-update-delete-any-flowsubflow-files\">\u003Ca class=\"header-anchor\" href=\"#modify-flow-files-add-update-delete-any-flowsubflow-files\">Modify flow files (add, update, delete any flow\u002Fsubflow files)\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>Request URL template:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fflow-files\u002F:type\u002F:fileName?\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>type\u003C\u002Fcode> can be \u003Ccode>flow\u003C\u002Fcode>\u002F\u003Ccode>subflow\u003C\u002Fcode>\u002F\u003Ccode>global\u003C\u002Fcode>\u003Cbr \u002F>\ncan pass plural too: \u003Ccode>flows\u003C\u002Fcode>\u002F\u003Ccode>subflows\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Notice \u003Ccode>fileName\u003C\u002Fcode> is optional if you request \"global\" flow, leave out the \u003Ccode>fileName\u003C\u002Fcode> url part.\u003C\u002Fp>\n\u003Cp>get\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --request GET \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fflow-files\u002Fflow\u002FMyFlow\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>delete\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --request DELETE \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fflow-files\u002Fflow\u002FMyFlow\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>add\u002Fupdate (mtime\u002Fatime query params are optional, in case you wish to set mtime \"Modified Time\" or atime \"Access Time\" after the file is written)\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --header \"Content-Type: application\u002Fjson\" \\\n  --request POST \\\n  --data '[{\"id\":\"d4366369.5303d\",\"type\":\"tab\",\"label\":\"NewFlow\",\"disabled\":false,\"info\":\"\"}]' \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fflow-files\u002Fflow\u002FNewFlow\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Example with mtime query param:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --header \"Content-Type: application\u002Fjson\" \\\n  --request POST \\\n  --data '[{\"id\":\"d4366369.5303d\",\"type\":\"tab\",\"label\":\"NewFlow\",\"disabled\":false,\"info\":\"\"}]' \\\n  'http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fflow-files\u002Fflows\u002FNewFlow?mtime=8\u002F16\u002F2020,%206:12:17%20PM'\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4 id=\"on-demand-flow-loading-using-external-restful-requests\">\u003Ca class=\"header-anchor\" href=\"#on-demand-flow-loading-using-external-restful-requests\">On Demand flow loading using external RESTful requests\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>During runtime, you can request flow-manager to load any flow file placed in the flows directory,\u003Cbr \u002F>\nby sending a POST request with the flows you wish to load (regardless of whether you configured any filter-flows or not)\u003C\u002Fp>\n\u003Cp>Request to deploy all flows \u002F redeploy current flows:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --header \"Content-Type: application\u002Fjson\" \\\n  --request POST \\\n  --data '{\"action\":\"loadAll\"\u002F\"reloadOnly\" }' \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fstates\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Request to add\u002Fremove\u002Freplace any flow:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --header \"Content-Type: application\u002Fjson\" \\\n  --request POST \\\n  --data '{\"action\":\"addOndemand\"\u002F\"removeOndemand\"\u002F\"replaceOndemand\" \"flows\":[\"Flow 1\",\"Flow 2\"] }' \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fstates\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4 id=\"retrieve-flow-states-for-all-flows-subflows-and-global-nodes-config-nodes\">\u003Ca class=\"header-anchor\" href=\"#retrieve-flow-states-for-all-flows-subflows-and-global-nodes-config-nodes\">Retrieve flow states for all flows, subflows, and global nodes (config nodes)\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>Retrieve state for specific type and flow.\u003Cbr \u002F>\n\u003Ccode>http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fstates\u002F:type\u002F:flowName\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Retrieve state for all flows of a given type.\u003Cbr \u002F>\n\u003Ccode>http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fstates\u002F:type\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>Retrieve state for all flows\u002Fsubflows\u002Fglobal.\u003Cbr \u002F>\n\u003Ccode>http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fstates\u002F\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Ccode>:type\u003C\u002Fcode> can be subflow\u002Fflow\u002Fglobal (if \u003Ccode>global\u003C\u002Fcode>, there's no need for \u003Ccode>:flowName\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>Example response for specific flow (\u003Ccode>http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fstates\u002Fflow\u002FFlow1\u003C\u002Fcode>)\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n    \"deployed\": true,\n    \"hasUpdate\": true,\n    \"onDemand\": false,\n    \"rev\": \"477a9952b50e161afdf2e4bb6b84ee31\",\n    \"mtime\": \"2020-08-16T13:54:23.000Z\",\n    \"oldRev\": \"54d163c840657920aaac705dadecae2b\", \u002F\u002F If hasUpdate\n    \"oldMtime\": \"2020-08-14T17:30:10.000Z\" \u002F\u002F If hasUpdate\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>\u003Ccode>deployed\u003C\u002Fcode> whether that flow file is deployed.\u003C\u002Fli>\n\u003Cli>\u003Ccode>hasUpdate\u003C\u002Fcode> whether that flow file was changed externally, and can be deployed again to update.\u003C\u002Fli>\n\u003Cli>\u003Ccode>onDemand\u003C\u002Fcode> whether that flow was deployed by an OnDemand request, and is not part of filtered flows selection.\u003C\u002Fli>\n\u003Cli>\u003Ccode>rev\u002FoldRev\u003C\u002Fcode> revision (checksum) of file.\u003C\u002Fli>\n\u003Cli>\u003Ccode>mtime\u002FoldMtime\u003C\u002Fcode> Modified Time of file.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"access-flow-manager-restful-api-on-remotes-defined-in-flow-manager-cfgjson\">\u003Ca class=\"header-anchor\" href=\"#access-flow-manager-restful-api-on-remotes-defined-in-flow-manager-cfgjson\">Access flow-manager RESTful API on remotes defined in \u003Ccode>flow-manager-cfg.json\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Fh4>\n\u003Cp>Request template:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fremotes\u002F:remoteName\u002F[append any rest endpoint here]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Example using \u003Ccode>flow-names\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-shell\">curl --request GET \\\n  http:\u002F\u002Flocalhost:1880\u002Fflow-manager\u002Fremotes\u002FProduction\u002Fflow-names\n\n\u003C\u002Fcode>\u003C\u002Fpre>\n",1784738655398]