管理员 HTTP API

此 API 可用于远程管理运行时。它由 Node-RED 编辑器和命令行工具使用

Authentication 认证

Node-RED 管理 API 使用 settings.js 中的 adminAuth 属性进行保护文件。security 部分描述了应如何配置该属性。

如果未设置该属性,则任何具有 Node-RED 网络访问权限的人都可以访问 Node-RED 管理 API。

Step 0 检查身份验证方案

对 /auth/login 的 HTTP GET 将返回主动身份验证方案。

1
2
# curl 示例:
curl http://localhost:1880/auth/login

在当前版本的 API 中,有两种可能的结果:

无主动身份验证

1
{}

所有 API 请求都可以在不提供任何进一步的身份验证信息的情况下进行。

基于凭据的身份验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"type": "credentials",
"prompts": [
{
"id": "username",
"type": "text",
"label": "Username"
},
{
"id": "password",
"type": "password",
"label": "Password"
}
]
}

API 由访问令牌保护。

Step 1 获取访问令牌

对 /auth/token 的 HTTP POST 用于将用户凭证交换为访问令牌。

必须提供以下参数:

  • client_id - 标识客户端。目前,必须是 node-red-admin 或 node-red-editor
  • grant_type - 必须是密码
  • 范围 - 正在请求的权限的空格分隔列表。目前,必须为 * 或 read
  • username - 要验证的用户名
  • password - 用于身份验证的密码
1
2
# curl 示例:
curl http://localhost:1880/auth/token --data 'client_id=node-red-admin&grant_type=password&scope=*&username=admin&password=password'

如果成功,响应将包含访问令牌:

1
2
3
4
5
{
"access_token": "A_SECRET_TOKEN",
"expires_in":604800,
"token_type": "Bearer"
}

Step 2 使用访问令牌

然后,所有后续 API 调用都应在 Authorization 中提供此令牌 页眉。

1
2
# curl 示例:
curl -H "Authorization: Bearer A_SECRET_TOKEN" http://localhost:1880/settings

撤销令牌

要在不再需要令牌时撤销令牌,应将其在 HTTP POST 中发送到 /auth/revoke

1
2
# curl 示例:
curl --data 'token=A_SECRET_TOKEN' -H "Authorization: Bearer A_SECRET_TOKEN" http://localhost:1880/auth/revoke

Types 类型

以下类型可与 API 方法一起使用。

传统上,流配置表示为 node 对象。

从 Node-RED 0.13 开始,添加了一个 API 来允许维护流(也称为选项卡) 单独。这些 API 使用更丰富的格式进行流配置。我们会的 更新主流配置以在将来使用这种更丰富的格式, 但就目前而言,这两种格式必须共存。

节点

节点表示流中单个节点的配置。

1
2
3
4
5
6
7
8
{
"id": "123",
"type": "inject",
"x": 0,
"y": 0,
"z": "456",
"wires": [ ... ]
}
字段 描述
id 节点的唯一 ID
type 节点的类型
x,y 绘制流时节点的 x/y 坐标
z 节点所属的流或子流
wires 节点输出所连接的连线
* 由特定type

如果节点是 config 节点,则它不能具有 , 或属性。x y wires

子流

子流节点表示子流的配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"id": "6115be82.9eea4",
"type": "subflow",
"name": "Subflow 1",
"info": "",
"in": [{
"x": 60,
"y": 40,
"wires": [{
"id": "1830cc4e.e7cf34"
}]
}],
"out": [{
"x": 320,
"y": 40,
"wires": [{
"id": "1830cc4e.e7cf34",
"port": 0
}]
}],
"configs": [ ... ],
"nodes": [ ... ]
}

完整的 Flow 配置

完整流程配置表示运行时中处于活动状态的整个流程集。它表示为 Node 对象的平面数组。这是 api 使用并由编辑器导入/导出的主流格式。/flows

1
2
3
4
5
6
7
8
9
10
[
{
"id": "1234",
"type": "inject"
},
{
"id": "5678",
"type": "debug"
}
]

从 0.15.0 开始,如果标头设置为如下格式,则 API 支持新格式。此格式提供上述节点数组,包括流的可选修订标识符:/flows Node-RED-API-Version v2

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"rev": "abc-123",
"flows": [
{
"id": "1234",
"type": "inject"
},
{
"id": "5678",
"type": "debug"
}
]
}

单流配置

Single Flow(单流)配置表示在编辑器中显示为选项卡的内容。

1
2
3
4
5
6
7
{
"id": "1234",
"label": "Sheet1",
"nodes": [ ... ],
"configs": [ ... ],
"subflows": [ ... ]
}
字段 描述
id 流的唯一 ID
label 流的标签
nodes 流中 Node 的数组
configs 流中的 Config 数组
subflows 流中的子流数组 - 仅在表示流配置时使用global

Node 模块

节点模块表示 npm 包提供的节点集的集合。

1
2
3
4
5
{
"name": "node-module-name",
"version": "0.0.6",
"nodes": [ ... ]
}
字段 描述
name 模块的名称 - 如其package.json
version 模块的版本 - 如其package.json
nodes 此模块提供的 Node Set 对象的数组

节点集

节点集表示一个 Node 模块。它们对应于 node-red.nodes 属性中的条目模块的 package.json

1
2
3
4
5
6
7
8
{
"id": "node-module-name/node-set-name",
"name": "node-set-name",
"types": [ ... ],
"enabled": true,
"module": "node-module-name",
"version": "0.0.6"
}
字段 描述
id 集的 ID -module/name
name 集合的名称 - 如模块的package.json
types 此集合提供的节点类型的字符串数组
enabled 当前是否启用此集
module 提供集的模块的名称。值 of 表示节点是从复制的文件加载的,而不是从 npm 模块加载的。node-red

Errors 错误

所有 API 方法都使用标准 HTTP 响应代码来指示成功或失败。

状态代码 原因
200 Success - 响应内容中包含结果
204 成功 - 没有更多内容
400 错误的请求 - 请参阅下面的响应格式
401 未授权 - 请参阅身份验证
404 未找到 - 未找到资源
409 版本不匹配 - 请参阅 POST /flows
500 服务器错误 - 服务器上出现问题

错误响应

对于响应代码,响应的正文将是 JSON 对象 包含以下字段:400

字段 描述
code 错误代码
message 错误描述
1
2
3
4
{
code: "module_already_loaded",
message: "Module already loaded"
}

错误代码

代码 描述
unexpected_error 发生意外错误
invalid_request 请求包含无效参数
settings_unavailable 存储系统不支持更改设置
module_already_loaded 请求的模块已加载
type_in_use 请求正在尝试删除/禁用当前正在使用的节点类型
invalid_api_version 请求在标头中指定了无效的 api 版本Node-RED-API-Version

Methods 方法

端点 描述
获取/auth/login 获取主动身份验证方案
发布/auth/token 中 将凭据交换为访问令牌
发布/auth/revoke 命令 撤销访问令牌
获取/设置 获取运行时设置
获取/诊断 获取运行时诊断
获取/流 获取活动流配置
获取/flows/state 获取活动流的运行时状态
发布/流 设置活动流配置
发布/flows/state 设置活动流的运行时状态
发布/流 将流添加到活动配置
获取/flow/:id 获取单个流配置
放/flow/:id 更新单个流程配置
删除/flow/:id 删除单个流程配置
获取/节点 获取已安装节点的列表
发布/节点 安装新的 node 模块
获取/nodes/:模块 获取 node 模块的信息
放/nodes/:模块 启用/禁用节点模块
删除/nodes/:模块 移除节点模块
获取/nodes/:module/:set 获取节点模块集信息
放/nodes/:module/:set 启用/禁用节点集

GET /auth/login

获取主动身份验证方案

响应

状态代码 原因 响应
200 成功 请参阅示例响应正文

在当前版本中,有两种可能的响应:

无主动身份验证
1
{}
基于凭据的身份验证
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"type": "credentials",
"prompts": [
{
"id": "username",
"type": "text",
"label": "Username"
},
{
"id": "password",
"type": "password",
"label": "Password"
}
]
}

prompts 字段指示在令牌交换中需要提供哪些属性。

POST /auth/token

将凭据交换为访问令牌

请求头

Authorization Bearer [token]
Content-type application/json

参数

请求正文必须是包含以下字段的 JSON 字符串:

字段 描述
client_id 标识客户端。目前,必须是或。node-red-admin node-red-editor
grant_type 必须是password
scope 以空格分隔的请求权限列表。目前,必须是或。* read
username 要验证的用户名
password 用于身份验证的密码

响应

状态代码 原因 响应
200 成功 请参阅示例响应正文
401 未授权 None
1
2
3
4
5
{
"access_token": "A_SECRET_TOKEN",
"expires_in":604800,
"token_type": "Bearer"
}

POST /auth/revoke

撤销访问令牌

请求头

Authorization Bearer [token]
Content-type application/json

参数

请求正文必须是包含以下字段的 JSON 字符串:

字段 描述
token 要撤销的令牌

响应

状态代码 原因 响应
200 成功 None
401 未授权 None

GET /settings

获取运行时设置。

需要权限:settings.read

请求头

Authorization Bearer [token]- 如果启用了身份验证

响应

状态代码 原因 响应
200 成功 请参阅示例响应正文
401 未授权 None
1
2
3
4
5
6
7
8
{
"httpNodeRoot": "/",
"version": "0.X.Y",
"user": {
"username": "admin",
"permissions": "*"
}
}

响应对象包含以下字段:

字段 描述
httpNodeRoot HTTP 节点的根路径
version Node-RED 运行时版本
user 有关已登录用户的信息。仅当启用身份验证时,此字段才存在。

GET /diagnostics

获取运行时诊断。请注意,仅当文件中的 value 设置为时,运行时诊断才可用。diagnostics enabled: true settings.js

需要权限:settings.read

请求头

Authorization Bearer [token]- 如果启用了身份验证

响应

状态代码 原因 响应
200 成功 请参阅示例响应正文
401 未授权 None
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
{
"report": "diagnostics",
"scope": "basic",
"time": {
"utc": "Mon, 23 Jan 2023 20:15:08 GMT",
"local": "1/23/2023, 8:15:08 PM"
},
"intl": {
"locale": "en-US",
"timeZone": "UTC"
},
"nodejs": {
"version": "v16.16.0",
"arch": "x64",
"platform": "linux",
"memoryUsage": {
"rss": 106336256,
"heapTotal": 36225024,
"heapUsed": 33527912,
"external": 1905248,
"arrayBuffers": 145556
}
},
"os": {
"containerised": true,
"wsl": false,
"totalmem": 32841064448,
"freemem": 28394344448,
"arch": "x64",
"loadavg": [
1,
1.01,
0.89
],
"platform": "linux",
"release": "5.15.85-1-MANJARO",
"type": "Linux",
"uptime": 5554.97,
"version": "#1 SMP PREEMPT Wed Dec 21 21:15:06 UTC 2022"
},
"runtime": {
"version": "3.0.2",
"isStarted": true,
"flows": {
"state": "start",
"started": true
},
"modules": {
"node-red": "3.0.2"
},
"settings": {
"available": true,
"apiMaxLength": "UNSET",
"disableEditor": false,
"contextStorage": {},
"debugMaxLength": 1000,
"editorTheme": {
"palette": {},
"projects": {
"enabled": false,
"workflow": {
"mode": "manual"
}
},
"codeEditor": {
"lib": "ace",
"options": {
"theme": "vs"
}
}
},
"flowFile": "flows.json",
"mqttReconnectTime": 15000,
"serialReconnectTime": 15000,
"socketReconnectTime": "UNSET",
"socketTimeout": "UNSET",
"tcpMsgQueueSize": "UNSET",
"inboundWebSocketTimeout": "UNSET",
"runtimeState": {
"enabled": false,
"ui": false
},
"adminAuth": "SET",
"httpAdminRoot": "/",
"httpAdminCors": "UNSET",
"httpNodeAuth": "UNSET",
"httpNodeRoot": "/",
"httpNodeCors": "UNSET",
"httpStatic": "UNSET",
"httpStaticRoot": "UNSET",
"httpStaticCors": "UNSET",
"uiHost": "SET",
"uiPort": "SET",
"userDir": "SET",
"nodesDir": "UNSET"
}
}
}

响应对象包含以下字段:

字段 描述
intl node-red 实例的国际化 (i8n) 语言
nodejs 底层架构/平台的 NodeJS 版本
os 当前内存使用情况的作系统信息和统计信息
runtime 当前 Node-RED 运行时信息
modules Node-RED 模块及其各自的版本
settings node-RED 实例当前设置的详细说明

GET /flows

获取活动流配置。

需要权限:flows.read

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Node-RED-API-Version (自 0.15.0 起)正在使用的 api 版本。如果未设置,则默认为。v1

响应

状态代码 原因 响应
200 成功 v1节点对象
数组 包含流的当前修订标识符的流响应对象v2
400 API 版本无效 错误响应
401 未授权 None
v1 - 节点对象数组
1
2
3
4
5
6
7
[
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1"
}
]
v2 - 流响应对象
1
2
3
4
5
6
7
8
9
10
{
"rev": "abc-123",
"flows": [
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1"
}
]
}

GET /flows/state

获取流的当前运行时状态。请注意,仅当文件中的 value 设置为时,流的运行时状态才可用。runtimeState enabled: true settings.js

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

响应

状态代码 原因 响应
200 成功 请参阅示例响应正文
401 未授权 None
1
2
3
{
"state": "stop"
}

响应对象包含以下字段:

字段 描述
state 流的运行时状态。可以是 或start``stop

POST /flows

设置活动流配置。

需要权限:flows.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Content-type application/json
Node-RED-API-Version (自 0.15.0 起)正在使用的 api 版本。如果未设置,则默认为。v1
Node-RED-Deployment-Type fullnodes flows reload

请求头用于定义部署类型执行:Node-RED-Deployment-Type

  • full- 在启动新配置之前,所有现有节点都会停止。如果未提供 header,则这是默认行为。
  • nodes- 在应用新配置之前,仅停止已修改的节点。
  • flows- 在应用新配置之前,仅停止包含已修改节点的流。
  • reload- 从存储重新加载流,并重新启动所有节点(自 Node-RED 0.12.2 起)

参数

请求正文的格式将取决于所使用的 Node-RED API 版本:

v1 - 节点对象数组
1
2
3
4
5
6
7
[
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1"
}
]
v2 - 流响应对象

该属性(如果提供)应反映返回的流的修订。rev GET /flows

1
2
3
4
5
6
7
8
9
10
{
"rev": "abc-123",
"flows": [
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1"
}
]
}
设置节点凭证

有两种方法可以为此请求提供凭证。单个节点数组中的对象可以包含一个包含该节点的凭证。flows credentials

或者,顶级对象可以包含具有单个节点的凭证或完整的加密集。credentials

内联节点凭证 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"rev": "abc-123",
"flows": [
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1",
"credentials": {
"user": "my-username",
"pass": "my-password"
}
}
]
}

单独的节点凭证 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"rev": "abc-123",
"flows": [
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1"
}
],
"credentials": {
"396c2376.c693dc": {
"user": "my-username",
"pass": "my-password"
}
}
}

加密的节点凭证:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"rev": "abc-123",
"flows": [
{
"type": "tab",
"id": "396c2376.c693dc",
"label": "Sheet 1"
}
],
"credentials": {
"$": "beea417990012379ca6d4116bd1fda5bOWbwy7UnQvccxAEH1V1pSEETTfSNerYGvP4Aai6RT/DNpnjCCP/fdzildzlJhFjYcRKdO1Q="
}
}

响应

状态代码 原因 响应
200 v2成功 活动流的新增功能。见下文。rev
204 v1成功 None
400 API 版本无效 错误响应
401 未授权 None
409 版本不匹配 Error 响应。见下文。

如果正在使用 API,则成功的请求不包含响应正文。v1

如果正在使用 API,则请求应包含设置为请求者已知最新值的属性。如果此值与运行时中活动流的值匹配,则请求将成功。v2 rev rev rev

如果不匹配,则表示运行时正在使用较新版本的 Flows ,请求将被拒绝并显示状态代码。这允许请求者解决所有差异并重新提交请求. 409

如果请求者希望强制部署,则应在请求中省略该属性. rev

请求成功时,响应会提供新值:rev

1
2
3
{
"rev": "def-456",
}

注意:该属性是一个字符串,但不应对其格式进行其他假设. rev

GET /flows/state

获取流的当前运行时状态。请注意,仅当文件中的 value 设置为时,流的运行时状态才可用。runtimeState enabled: true settings.js

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

响应

状态代码 原因 响应
200 成功 请参阅示例响应正文
401 未授权 None
1
2
3
{
"state": "stop"
}

响应对象包含以下字段:

字段 描述
state 流的运行时状态。可以是或 start stop

POST /flow

将流添加到活动配置。流在编辑器中表示为选项卡。

需要权限:flows.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Content-type application/json

参数

请求正文必须是单个流配置对象。

1
2
3
4
5
6
{
"id": "91ad451.f6e52b8",
"label": "Sheet 1",
"nodes": [ ],
"configs": [ ]
}

配置对象必须至少包含 property. nodes

运行时将为流分配一个新 ID。如果提供的流配置对象包含一个字段,则该字段将被替换,并且所有节点的属性都会更新以匹配. id z

流中的所有节点都必须具有唯一的属性。如果任何 s 已在使用中,则请求将被拒绝. id id

响应

状态代码 原因 响应
204 成功 None
400 错误的请求 错误响应
401 未授权 None

返回流的. id

1
{"id":"5a04dce3.a5fb24"}

GET /flow/:id

获取单个流配置。流在编辑器中表示为选项卡。

需要权限:flows.read

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

参数

路径组件 描述
id 流的 ID。

如果设置为,则全局配置节点和子流定义返回。id global

响应

状态代码 原因 响应
200 成功 流对象。请参阅示例响应正文
401 未授权 None
404 未找到 None
1
2
3
4
5
6
7
{
"id": "91ad451.f6e52b8",
"label": "Sheet 1",
"nodes": [ ],
"configs": [ ],
"subflows": [ ]
}

PUT /flow/id

更新活动配置中的流程。流在编辑器中表示为选项卡。

在启动新流配置之前,现有流中的所有节点都将停止。

需要权限:flows.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Content-type application/json

参数

路径组件 描述
id 要更新的流的 ID,或global

请求正文必须是单个流配置对象。

对于正常流:

1
2
3
4
5
6
{
"id": "91ad451.f6e52b8",
"label": "Sheet 1",
"nodes": [ ],
"configs": [ ]
}

对于全局流:

1
2
3
4
5
{
"id": "global",
"configs": [ ],
"subflows": [ ]
}

响应

状态代码 原因 响应
204 成功 None
400 错误的请求 错误响应
401 未授权 None

返回流的. id

1
{"id":"5a04dce3.a5fb24"}

DELETE /flow/:id

删除单个流程配置

需要权限:flows.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

参数

路径组件 描述
id 流的 ID

响应

状态代码 原因 响应
204 成功 None
400 错误的请求 Error 响应
401 未授权 None
404 未找到 None

GET /nodes

获取已安装节点的列表

需要权限:nodes.read

请求头

请求头
Accept application/json或 - 参见 Response 部分text/html
Authorization Bearer [token]- 如果启用了身份验证

响应

状态代码 原因 响应
200 成功 取决于标头。有关详细信息,请参阅下文。Accept
401 未授权 None
Accept: application/json

返回 Node Set 对象的数组。例如:

1
2
3
4
5
6
7
8
9
10
11
12
[
{
"id": "node-red/sentiment",
"name": "sentiment",
"types": [
"sentiment"
],
"enabled": true,
"module": "node-red"
"version": "0.10.6"
}
]
Accept: text/html

这将所有已安装节点的 HTML 内容作为单个响应返回。

POST /nodes

安装新的 node 模块

需要权限:nodes.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Content-type application/json- 如果从 npm 存储库安装
Content-type multipart/form-data- 如果安装 tgz 软件包

参数

从 npm 存储库安装包时,请求正文必须是包含以下字段的 JSON 字符串:

字段 描述
module 要从 npm 存储库安装的节点模块的名称,或包含 node 模块的目录的完整路径。注意:此 api 不支持 npm 使用的所有模块说明符,例如 files 或 version 限定符。.tgz
1
2
3
{
"module": "node-red-node-suncalc"
}

如果安装 tgz 包,请求正文必须为multipart/form-data

以下示例将安装 . curl node-red-contrib-foo

1
curl -X POST http://localhost:1880/nodes -H "Content-Type: multipart/form-data" -F "tarball=@node-red-contrib-foo-1.0.3.tgz;type=application/x-compressed-tar;filename=node-red-contrib-foo-1.0.3.tgz"

响应

状态代码 原因 响应
200 成功 Node Module 对象。请参阅示例响应正文
400 错误的请求 错误响应
401 未授权 None
404 未找到 None
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "node-red-node-suncalc",
"version": "0.0.6",
"nodes": [
{
"id": "node-red-node-suncalc/suncalc",
"name": "suncalc",
"types": [
"sunrise"
],
"enabled": true,
"loaded": true,
"module": "node-red-node-suncalc"
}
]
}

GET /nodes/:module

获取 node 模块的信息。

需要权限:nodes.read

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

参数

路径组件 描述
module 模块的名称

响应

状态代码 原因 响应
200 成功 Node Module 对象。请参阅示例响应正文
400 错误的请求 Error 响应
401 未授权 None
404 未找到 None
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "node-red-node-suncalc",
"version": "0.0.6",
"nodes": [
{
"id": "node-red-node-suncalc/suncalc",
"name": "suncalc",
"types": [
"sunrise"
],
"enabled": true,
"module": "node-red-node-suncalc",
"version": "0.0.6"
}
]
}

PUT /nodes/:module

启用/禁用节点模块

需要权限:nodes.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Content-type application/json

参数

路径组件 描述
module 模块的名称

请求正文必须是包含以下字段的 JSON 字符串:

字段 描述
enabled true或 - 是启用还是禁用模块false
1
2
3
{
"enabled": true
}

响应

状态代码 原因 响应
200 成功 Node Module 对象。请参阅示例响应正文
400 错误的请求 错误响应
401 未授权 None
404 未找到 None
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"name": "node-red-node-suncalc",
"version": "0.0.6",
"nodes": [
{
"id": "node-red-node-suncalc/suncalc",
"name": "suncalc",
"types": [
"sunrise"
],
"enabled": true,
"loaded": true,
"module": "node-red-node-suncalc"
}
]
}

DELETE /nodes/:module

移除节点模块

需要权限:nodes.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

参数

路径组件 描述
module 模块的名称

响应

状态代码 原因 响应
204 成功 None
400 错误的请求 Error 响应
401 未授权 None
404 未找到 None

GET /nodes/:module/:set

获取节点模块集信息

需要权限:nodes.read

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证

参数

路径组件 描述
module 模块的名称
set 集的名称

响应

状态代码 原因 响应
200 成功 Node Set 对象。请参阅示例响应正文
401 未授权 None
404 未找到 None
1
2
3
4
5
6
7
8
9
10
{
"id": "node-red-node-suncalc/suncalc",
"name": "suncalc",
"types": [
"sunrise"
],
"enabled": true,
"module": "node-red-node-suncalc",
"version": "0.0.6"
}

PUT /nodes/: module/:set

启用/禁用节点集

需要权限:nodes.write

请求头

请求头
Authorization Bearer [token]- 如果启用了身份验证
Content-type application/json

参数

路径组件 描述
module 模块的名称
set 集的名称

请求正文必须是包含以下字段的 JSON 字符串:

字段 描述
enabled true或 - 是启用还是禁用模块false
1
2
3
{
"enabled": true
}

响应

状态代码 原因 响应
200 成功 Node Set 对象。请参阅示例响应正文
400 错误的请求 错误响应
401 未授权 None
404 未找到 None
1
2
3
4
5
6
7
8
9
{
"id": "node-red-node-suncalc/suncalc",
"name": "suncalc",
"types": [
"sunrise"
],
"enabled": false,
"module": "node-red-node-suncalc"
}