{"name":"Emoncms API","base_url":"https:\/\/emoncms.org\/","description":"HTTP API for emoncms, the open source energy monitoring platform. Post data from devices and scripts, read back recorded time series data and manage configuration.","docs":{"interactive":"https:\/\/emoncms.org\/site\/api","markdown":"https:\/\/emoncms.org\/site\/api.md","llms_txt":"https:\/\/emoncms.org\/llms.txt"},"authentication":{"description":"Every account has a read only API key and a read & write API key, shown on https:\/\/emoncms.org\/site\/api when logged in. Each endpoint's mode states which key it requires.","methods":["POST body parameter: apikey=APIKEY (recommended for POST requests)","HTTP header: Authorization: Bearer APIKEY","URL query parameter: ?apikey=APIKEY"],"public":"Endpoints marked public:true can be used without a key for feeds marked public, with the owner's userid or via public profile routing: https:\/\/emoncms.org\/USERNAME\/feed\/list.json"},"conventions":{"http":"Endpoints are HTTP GET unless marked http:post, where parameters marked post:true must be sent in the POST body.","responses":"JSON unless an endpoint's notes say otherwise. Failures usually respond {\"success\": false, \"message\": \"...\"}.","parameter_types":{"feed":"numeric feed id, see feed\/list.json","bool":"0 or 1","select":"one of the values listed in options","default":"text or number, see the parameter description"}},"endpoints":[{"description":"Post data (JSON)","path":"input\/post","parameters":{"node":{"default":"emontx","description":"Node name, max 16 characters"},"fulljson":{"default":"{\"power1\":100,\"power2\":200,\"power3\":300}","description":"Strict JSON, recommended for new integrations"}},"mode":"write","group":"Posting data","notes":"Responds {\"success\": true} when the fulljson parameter is used, plain text 'ok' otherwise. The node name can also be given as a sub-action: input\/post\/emontx. Legacy parameters json={power1:100} and csv=100,200,300 are parsed leniently: non-numeric values are silently skipped.","module":"input"},{"description":"Post data (CSV)","path":"input\/post","parameters":{"node":{"default":"emontx","description":"Node name, max 16 characters"},"csv":{"default":"100,200,300","description":"Values are named 1,2,3... in order"}},"mode":"write","group":"Posting data","module":"input"},{"description":"Post data with timestamp","path":"input\/post","parameters":{"node":{"default":"emontx"},"fulljson":{"default":"{\"power1\":100}"},"time":{"default":1787354473,"description":"Unix timestamp in seconds (not milliseconds)"}},"mode":"write","group":"Posting data","notes":"Time may also be included as a 'time' key inside the JSON data, as a unix timestamp or ISO8601 string. The time parameter takes precedence if both are given.","module":"input"},{"description":"Bulk upload","path":"input\/bulk","parameters":{"data":{"default":"[[0,16,1137],[2,17,1437,3164],[4,19,1412,3077]]","description":"Array of updates: [interval, node, value1, value2...]"}},"mode":"write","group":"Posting data","notes":"Without a time parameter the last row is taken as 'now' and earlier rows are offset relative to it. A value may also be an object to name the input, e.g [4,19,{\"power\":1412}]. Rows with fewer than 3 elements are skipped.","module":"input"},{"description":"Bulk upload with offset","path":"input\/bulk","parameters":{"data":{"default":"[[-10,16,1137],[-8,17,1437,3164],[-6,19,1412,3077]]"},"offset":{"default":-10,"description":"Row times are relative to now + offset"}},"mode":"write","group":"Posting data","module":"input"},{"description":"Bulk upload with sentat time","path":"input\/bulk","parameters":{"data":{"default":"[[520,16,1137],[530,17,1437,3164],[535,19,1412,3077]]"},"sentat":{"default":543,"description":"Positive increasing time index of the moment of sending"}},"mode":"write","group":"Posting data","module":"input"},{"description":"Bulk upload with absolute time","path":"input\/bulk","parameters":{"data":{"default":"[[-10,16,1137],[-8,17,1437,3164],[-6,19,1412,3077]]"},"time":{"default":1787354473,"description":"Unix timestamp the row offsets are relative to"}},"mode":"write","group":"Posting data","module":"input"},{"description":"Encrypted post","path":"input\/post","parameters":[],"mode":"write","group":"Posting data","notry":true,"notes":"For devices without HTTPS: POST to input\/post or input\/bulk with header Content-Type: aes128cbc (or aes128cbcgz) and Authorization: USERID:HMAC_SHA256. Body is base64(IV + ciphertext) of a standard request string, AES-128-CBC encrypted with the write apikey as pre-shared key. The response is a base64 sha256 hash of the decrypted payload for verification.","module":"input"},{"description":"List nodes and inputs","path":"input\/get","parameters":[],"mode":"read","group":"Listing inputs","notes":"Returns {node: {input: {time, value, processList}}} for all nodes.","module":"input"},{"description":"List inputs for a node","path":"input\/get","parameters":{"node":{"default":"emontx","description":"Can also be given as sub-action: input\/get\/emontx"}},"mode":"read","group":"Listing inputs","module":"input"},{"description":"Get a specific input","path":"input\/get","parameters":{"node":{"default":"emontx"},"name":{"default":"power1","description":"Can also be given as sub-action: input\/get\/emontx\/power1"}},"mode":"read","group":"Listing inputs","module":"input"},{"description":"List inputs with latest values","path":"input\/list","parameters":[],"mode":"read","group":"Listing inputs","notes":"Flat list with id, nodeid, name, description, processList, time and value.","module":"input"},{"description":"List inputs configuration","path":"input\/getinputs","parameters":[],"mode":"read","group":"Listing inputs","notes":"Returns {node: {input: {id, processList}}} without last time and value. input\/get_inputs is an alias.","module":"input"},{"description":"Set input fields","path":"input\/set","parameters":{"inputid":{"default":1},"fields":{"default":"{\"description\":\"Input Description\"}","description":"Only name and description can be set"}},"mode":"write","group":"Managing inputs","module":"input"},{"description":"Set descriptions for multiple inputs","path":"input\/set-descriptions","parameters":{"inputs":{"default":"[{\"id\":1,\"description\":\"Power\"}]","post":true,"description":"Must be sent in the POST body"}},"mode":"write","group":"Managing inputs","http":"post","module":"input"},{"description":"Set descriptions for a node's inputs","path":"input\/set-node-input-descriptions","parameters":{"node":{"default":"emontx"},"names":{"default":"Power 1,Power 2,Power 3","description":"Comma-separated, applied in input id order"}},"mode":"write","group":"Managing inputs","module":"input"},{"description":"Delete an input","path":"input\/delete","parameters":{"inputid":{"default":1}},"mode":"write","group":"Managing inputs","module":"input"},{"description":"Delete multiple inputs","path":"input\/delete","parameters":{"inputids":{"default":"[1,2]","description":"JSON array of input ids"}},"mode":"write","group":"Managing inputs","module":"input"},{"description":"Delete inputs without a process list","path":"input\/clean","parameters":[],"mode":"write","group":"Managing inputs","notes":"Responds in plain text with the number of inputs deleted.","module":"input"},{"description":"Remove processes referencing deleted feeds","path":"input\/cleanprocesslistfeeds","parameters":[],"mode":"write","group":"Managing inputs","notes":"Responds in plain text with a report of the process list entries removed.","module":"input"},{"description":"Disable automatic input creation","path":"input\/disable","parameters":[],"mode":"write","group":"Managing inputs","notes":"Posted data for inputs that do not already exist is discarded until input\/enable is called. Check the current state with input\/isdisabled.","module":"input"},{"description":"Enable automatic input creation","path":"input\/enable","parameters":[],"mode":"write","group":"Managing inputs","module":"input"},{"description":"Check if input creation is disabled","path":"input\/isdisabled","parameters":[],"mode":"write","group":"Managing inputs","module":"input"},{"description":"Get input process list","path":"input\/process\/get","parameters":{"inputid":{"default":1}},"mode":"write","group":"Process lists","notes":"Returns the stored short form e.g. process__log_to_feed:1,process__scale:0.1","module":"input"},{"description":"Set input process list","path":"input\/process\/set","parameters":{"inputid":{"default":1},"processlist":{"default":"[{\"fn\":\"process__log_to_feed\",\"args\":[1]}]","post":true,"description":"Must be sent in the POST body"}},"mode":"write","group":"Process lists","http":"post","notes":"JSON array of {fn, args} entries. Process function names and argument types are listed by process\/list.json. The legacy colon\/comma format is no longer accepted when setting.","module":"input"},{"description":"Reset input process list","path":"input\/process\/reset","parameters":{"inputid":{"default":1}},"mode":"write","group":"Process lists","module":"input"},{"description":"List feeds","path":"feed\/list.json","parameters":{"meta":{"default":1,"type":"bool","description":"Include engine meta: start time, interval, size"}},"mode":"read","group":"Feed list & metadata","public":true,"notes":"feed\/listwithmeta.json is a legacy alias of feed\/list.json?meta=1. A user's public feeds can be listed without an apikey via \/username\/feed\/list.json.","module":"feed"},{"description":"List public feeds of a user","path":"feed\/list.json","parameters":{"userid":{"default":1,"description":"Returns only feeds that user has marked public"}},"mode":"read","group":"Feed list & metadata","public":true,"module":"feed"},{"description":"Get feed id from name","path":"feed\/getid.json","parameters":{"name":{"default":"Power"},"tag":{"default":"Test","description":"Optional"}},"mode":"read","group":"Feed list & metadata","notes":"Responds in plain text with the feed id.","module":"feed"},{"description":"Get feed field","path":"feed\/get.json","parameters":{"id":{"type":"feed"},"field":{"default":"name"}},"mode":"read","group":"Feed list & metadata","public":true,"module":"feed"},{"description":"Get all feed fields","path":"feed\/aget.json","parameters":{"id":{"type":"feed"}},"mode":"read","group":"Feed list & metadata","public":true,"module":"feed"},{"description":"Get feed meta","path":"feed\/getmeta.json","parameters":{"id":{"type":"feed"}},"mode":"read","group":"Feed list & metadata","public":true,"notes":"Returns start_time, interval and npoints for fixed interval engines.","module":"feed"},{"description":"Get feed size on disk","path":"feed\/getfeedsize.json","parameters":{"id":{"type":"feed"}},"mode":"read","group":"Feed list & metadata","public":true,"module":"feed"},{"description":"Get feed data checksum","path":"feed\/sha256sum.json","parameters":{"id":{"type":"feed"},"npoints":{"default":0,"description":"Number of most recent datapoints to include, 0 = whole feed"}},"mode":"read","group":"Feed list & metadata","public":true,"notes":"PHPFina and PHPTimeSeries feeds only.","module":"feed"},{"description":"Last updated time and value for feed","path":"feed\/timevalue.json","parameters":{"id":{"type":"feed"}},"mode":"read","group":"Reading data","public":true,"module":"feed"},{"description":"Last value of a given feed","path":"feed\/value.json","parameters":{"id":{"type":"feed"}},"mode":"read","group":"Reading data","public":true,"module":"feed"},{"description":"Fetch a value at a given time","path":"feed\/value.json","parameters":{"id":{"type":"feed"},"time":{"default":0,"description":"Unix timestamp in seconds"}},"mode":"read","group":"Reading data","public":true,"module":"feed"},{"description":"Last value for multiple feeds","path":"feed\/fetch.json","parameters":{"ids":{"default":"1,2,3"}},"mode":"read","group":"Reading data","public":true,"notes":"Values are returned in the order requested. false indicates a missing feed or no access, null is a valid empty value.","module":"feed"},{"description":"Fetch data from a feed","path":"feed\/data.json","parameters":{"id":{"type":"feed"},"start":{"default":0,"description":"Unix time in seconds or milliseconds, or any php date string e.g: -1 week, or 01-12-2021"},"end":{"default":0,"description":"Same formats as start, e.g: now"},"interval":{"default":60,"description":"Seconds, 0 = auto (~800 points), or timezone aligned: daily, weekly, monthly, annual"},"average":{"type":"bool","default":0,"description":"Mean of each interval rather than the value at its start"},"delta":{"type":"bool","default":0,"description":"Difference per interval, turns cumulative kWh feeds into kWh per interval"},"timeformat":{"type":"select","default":"unix","options":["unix","unixms","excel","iso8601","notime"],"description":"unix: seconds, unixms: milliseconds"},"skipmissing":{"type":"bool","default":0,"description":"Omit null datapoints"},"limitinterval":{"type":"bool","default":0,"description":"Limit interval to the feed's native interval"},"dp":{"default":-1,"description":"Round values to N decimal places, -1 = off"},"timezone":{"default":"","description":"Used for date strings and aligned intervals, defaults to the account timezone"}},"mode":"read","group":"Reading data","public":true,"notes":"Maximum 70000 datapoints per request. If timeformat is not given, response times are unix milliseconds (unixms). The legacy mode parameter is an alias of interval. feed\/average.json is a shortcut for average=1.","module":"feed"},{"description":"Fetch data from multiple feeds","path":"feed\/data.json","parameters":{"ids":{"default":"1,2,3"},"start":{"default":0},"end":{"default":0},"interval":{"default":60},"timeformat":{"type":"select","default":"unix","options":["unix","unixms","excel","iso8601","notime"],"description":"unix: seconds, unixms: milliseconds"}},"mode":"read","group":"Reading data","public":true,"notes":"Returns [{feedid, data}, ...] rather than a bare data array. average and delta accept comma separated per-feed values, e.g. delta=1,0,1.","module":"feed"},{"description":"CSV export","path":"feed\/csvexport.json","parameters":{"id":{"type":"feed"},"start":{"default":0},"end":{"default":0},"interval":{"default":60},"timeformat":{"type":"select","default":"excel","options":["unix","unixms","excel","iso8601","notime"]}},"mode":"read","group":"Reading data","public":true,"notry":true,"notes":"Streams a CSV file download. Equivalent to feed\/data.json with csv=1, which also supports multi-column export with ids=1,2,3.","module":"feed"},{"description":"Insert or update data point","path":"feed\/post.json","parameters":{"id":{"type":"feed"},"time":{"default":0,"description":"Unix timestamp in seconds"},"value":{"default":100}},"mode":"write","group":"Writing data","notes":"feed\/insert.json and feed\/update.json are legacy aliases of feed\/post.json.","module":"feed"},{"description":"Insert or update multiple data points","path":"feed\/post.json","parameters":{"id":{"type":"feed"},"data":{"default":"[[1787354470,100],[1787354480,150],[1787354490,200],[1787354500,250]]","description":"[[time,value],...] in GET or POST"}},"mode":"write","group":"Writing data","module":"feed"},{"description":"Bulk binary upload","path":"feed\/upload.json","parameters":[],"mode":"write","group":"Writing data","notry":true,"notes":"POST raw binary body of float32 values with query parameters id, start, interval and npoints. Fixed interval PHPFina feeds only. Used by the sync and backup modules.","module":"feed"},{"description":"Sync feed data","path":"feed\/sync.json","parameters":[],"mode":"write","group":"Writing data","notry":true,"notes":"POST raw binary body of checksum framed feed segments, as sent by the emoncms sync module. PHPFina and PHPTimeSeries feeds only. Responds with updated feed meta.","module":"feed"},{"description":"Create new feed","path":"feed\/create.json","parameters":{"tag":{"default":"Test"},"name":{"default":"Power"},"engine":{"default":5,"description":"5: PHPFina fixed interval, 2: PHPTimeSeries variable interval"},"options":{"default":"{\"interval\":10}","description":"PHPFina interval in seconds, minimum 10"},"unit":{"default":"W","description":"Optional, max 10 characters"}},"mode":"write","group":"Managing feeds","notes":"Returns {\"success\":true, \"feedid\":N, \"feed\":{...}} on success. Use the feedid in a log to feed process or when posting data directly.","module":"feed"},{"description":"Delete existent feed","path":"feed\/delete.json","parameters":{"id":{"type":"feed"}},"mode":"write","group":"Managing feeds","module":"feed"},{"description":"Update feed fields","path":"feed\/set.json","parameters":{"id":{"type":"feed"},"fields":{"default":"{\"name\":\"anewname\"}","description":"name, tag, unit and public can be set"}},"mode":"write","group":"Managing feeds","notes":"The tag:name combination must be unique. Set public to make a feed readable without an apikey.","module":"feed"},{"description":"Update multiple feeds","path":"feed\/set-multiple.json","parameters":{"feeds":{"default":"[{\"id\":1,\"name\":\"Power\"}]","post":true,"description":"Must be sent in the POST body"}},"mode":"write","group":"Managing feeds","http":"post","module":"feed"},{"description":"Clear all feed data","path":"feed\/clear.json","parameters":{"id":{"type":"feed"}},"mode":"write","group":"Managing feeds","notes":"Deletes all datapoints but keeps the feed.","module":"feed"},{"description":"Trim feed data before time","path":"feed\/trim.json","parameters":{"id":{"type":"feed"},"start_time":{"default":0,"description":"Unix timestamp, datapoints before this are removed"}},"mode":"write","group":"Managing feeds","module":"feed"},{"description":"Scale a range of values","path":"feed\/scalerange.json","parameters":{"id":{"type":"feed"},"start":{"default":0},"end":{"default":0},"value":{"default":1,"description":"Scale factor"}},"mode":"write","group":"Managing feeds","notes":"PHPFina feeds only.","module":"feed"},{"description":"Refresh feed disk use","path":"feed\/updatesize.json","parameters":[],"mode":"write","group":"Managing feeds","module":"feed"},{"description":"Get feed process list","path":"feed\/process\/get.json","parameters":{"id":{"type":"feed"}},"mode":"write","group":"Virtual feed process list","notes":"Virtual feeds only. Returns the stored short form e.g. process__source_feed_data_time:1","module":"feed"},{"description":"Set feed process list","path":"feed\/process\/set.json","parameters":{"id":{"type":"feed"},"processlist":{"default":"[{\"fn\":\"process__source_feed_data_time\",\"args\":[1]}]","post":true,"description":"Must be sent in the POST body"}},"mode":"write","group":"Virtual feed process list","http":"post","notes":"JSON array of {fn, args} entries, virtual feeds only. Process function names and argument types are listed by process\/list.json?context=1. The legacy colon\/comma format is no longer accepted when setting.","module":"feed"},{"description":"Reset feed process list","path":"feed\/process\/reset.json","parameters":{"id":{"type":"feed"}},"mode":"write","group":"Virtual feed process list","module":"feed"},{"description":"List devices","path":"device\/list.json","parameters":[],"mode":"read","group":"Device list & details","notes":"Returns id, nodeid, name, description, type, devicekey and the time of the last update for every device in the account, ordered by nodeid then name.","module":"device"},{"description":"Get device details","path":"device\/get.json","parameters":{"id":{"default":1,"description":"Device id, as returned by device\/list.json"}},"mode":"write","group":"Device list & details","notes":"Responds {\"success\": false, \"message\": \"Device does not exist\"} for an unknown id. The devicekey is included in the response, so a read only key is not accepted here.","module":"device"},{"description":"Create a device","path":"device\/create.json","parameters":{"nodeid":{"default":"emontx","description":"Must be unique within the account, this is the node name inputs are posted to"},"name":{"default":"Test","description":"Optional, defaults to the nodeid"},"description":{"default":"House","description":"Optional"},"type":{"default":"","description":"Optional device template type, e.g. emontx3, see device\/template\/listshort.json"},"dkey":{"default":"","description":"Optional device key, 32 hexadecimal characters"}},"mode":"write","group":"Managing devices","notes":"Returns the new device id. Creating a device does not create its inputs and feeds, call device\/init.json afterwards to apply the template. Names, nodeids and descriptions accept letters, numbers, spaces and _ - : . only.","module":"device"},{"description":"Create and initialise a device","path":"device\/autocreate.json","parameters":{"nodeid":{"default":"emontx","description":"Node name the device posts inputs to"},"type":{"default":"emontx3","description":"Device template type"}},"mode":"write","group":"Managing devices","destructive":true,"notes":"Used by the input name describe mechanism to register a device in one call. Creates the device if the nodeid is not already in use, names it nodeid:type and then initialises it from the template. Calling it again for an existing nodeid re-runs the template.","module":"device"},{"description":"Update device fields","path":"device\/set.json","parameters":{"id":{"default":1},"fields":{"default":"{\"name\":\"anewname\"}","description":"name, description, nodeid, type and devicekey can be set"}},"mode":"write","group":"Managing devices","notes":"Only the fields present in the JSON object are changed. A devicekey must be exactly 32 hexadecimal characters: use device\/generatekey.json to create one.","module":"device"},{"description":"Delete a device","path":"device\/delete.json","parameters":{"id":{"default":1}},"mode":"write","group":"Managing devices","notes":"Removes the device registration only. The inputs and feeds it created are left in place.","module":"device"},{"description":"Remove inactive devices and inputs","path":"device\/clean","parameters":{"active":{"default":3600,"description":"Seconds, inputs not updated within this time are treated as inactive"},"dryrun":{"type":"bool","default":1,"description":"List what would be removed without changing anything"}},"mode":"write","group":"Managing devices","notes":"Responds in plain text with a summary of what was, or would be, removed. Inactive inputs that are not logging to a feed are deleted, along with any device left without inputs. Always run with dryrun=1 first.","module":"device"},{"description":"Generate a random device key","path":"device\/generatekey.json","parameters":[],"mode":"write","group":"Device keys","notes":"Returns a new random key without saving it. Apply it with device\/set.json and fields={\"devicekey\":\"...\"}, or use device\/setnewdevicekey.json to generate and save in one call.","module":"device"},{"description":"Set a new random device key","path":"device\/setnewdevicekey.json","parameters":{"id":{"default":1}},"mode":"write","group":"Device keys","notes":"Generates a new key and saves it against the device, replacing any existing key. Anything posting with the old key stops working.","module":"device"},{"description":"List template metadata","path":"device\/template\/listshort.json","parameters":[],"mode":"write","group":"Device templates","notes":"Name, category, group and description for every available template, keyed by the type string used in device\/create.json. Use this to pick a device type.","module":"device"},{"description":"List templates in full","path":"device\/template\/list.json","parameters":[],"mode":"write","group":"Device templates","notes":"The complete definitions, including the inputs, feeds and process lists of every template. This is a large response, device\/template\/listshort.json is usually enough.","module":"device"},{"description":"Get template details","path":"device\/template\/get.json","parameters":{"type":{"default":"emontx3","description":"Template type string, see device\/template\/listshort.json"}},"mode":"write","group":"Device templates","module":"device"},{"description":"Prepare device initialization","path":"device\/template\/prepare.json","parameters":{"id":{"default":1}},"mode":"write","group":"Device templates","notes":"Returns the inputs, feeds and process lists the device type's template would create, each marked with whether it already exists. Nothing is created. Edit this result and send it back to device\/template\/init.json to control what is applied. Adding type=... to the request sets the device type before preparing, so pass it only when you mean to change the type.","module":"device"},{"description":"Prepare a custom template","path":"device\/template\/prepare_custom.json","parameters":{"id":{"default":1},"template":{"default":"{\"feeds\":[],\"inputs\":[]}","post":true,"description":"Template JSON, must be sent in the POST body"}},"mode":"write","group":"Device templates","http":"post","notes":"As prepare, but for a template supplied in the request rather than the device type's stored template.","module":"device"},{"description":"Initialize device from its template","path":"device\/init.json","parameters":{"id":{"default":1},"template":{"default":"","description":"Optional prepared template JSON, leave empty to apply the device type's default"}},"mode":"write","group":"Device templates","destructive":true,"notes":"Creates the inputs, feeds and process lists defined by the device type. A device should only need initializing once: initializing twice duplicates its inputs and feeds. The template parameter may be sent in the query string or the POST body.","module":"device"},{"description":"Initialize device with a prepared template","path":"device\/template\/init.json","parameters":{"id":{"default":1},"template":{"default":"{\"feeds\":[],\"inputs\":[]}","post":true,"description":"Prepared template JSON, must be sent in the POST body"}},"mode":"write","group":"Device templates","http":"post","destructive":true,"notes":"Takes the result of device\/template\/prepare.json, so the caller decides which inputs and feeds are created. The device must have a type set.","module":"device"},{"description":"Initialize device with a custom template","path":"device\/template\/init_custom.json","parameters":{"id":{"default":1},"template":{"default":"{\"feeds\":[],\"inputs\":[]}","post":true,"description":"Template JSON, must be sent in the POST body"}},"mode":"write","group":"Device templates","http":"post","destructive":true,"notes":"Applies a template supplied in the request, no device type is required.","module":"device"},{"description":"Generate a template from a device","path":"device\/template\/generate.json","parameters":{"id":{"default":1}},"mode":"write","group":"Device templates","notes":"Builds a template definition from the device's existing inputs, feeds and process lists, the reverse of initialization. Useful for turning a configured device into a reusable template file.","module":"device"},{"description":"List all processes","path":"process\/list.json","parameters":[],"mode":"read","group":"Available processes","public":true,"notes":"Every process the server supports, keyed by its function name, e.g. process__log_to_feed. Each entry gives id_num, name, short, group, description and an args array describing the argument types the process takes. This is the list to work from when building a process list.","module":"process"},{"description":"List processes valid for a context","path":"process\/list.json","parameters":{"context":{"type":"select","default":0,"options":[0,1],"description":"0: input process list, 1: virtual feed process list"}},"mode":"read","group":"Available processes","public":true,"notes":"The same list filtered to the processes that are valid in that context, with deleted processes removed. Not every process makes sense on a virtual feed: log to feed, for example, is input only.","module":"process"},{"description":"Process id to name map","path":"process\/map.json","parameters":[],"mode":"read","group":"Available processes","public":true,"notes":"Maps the numeric id_num stored in legacy process lists to the process function name, e.g. 1: process__log_to_feed. Use it to read process lists saved in the old colon and comma format.","module":"process"}]}