Download OpenAPI specification:
This documentation describes the FWCloud REST API, the backend module responsible for executing management operations on firewalls, policies, IP objects, VPNs, and other platform resources.
FWCloud-UI.To call the API, you need:
Origin header (it must be allowed in the server's CORS configuration).customer, username, password).Login
Send POST /user/login with JSON credentials.
Session
The API returns a session cookie; you must reuse it in subsequent calls.
Mutating Operations
In operations that modify data, the API may require additional confirmation through the X-FWC-Confirm-Token header.
A request is composed of:
POST, GET, PUT, DELETE, etc.Content-Type, Origin, session cookie, and confirmation token when applicable.This introduction is aligned with the official FWCloud-API usage guide:
Validate the user credentials and initialize data in the session file.
| customer required | number <double> |
| username required | string |
| password required | string |
{- "customer": 1,
- "username": "fwcadmin",
- "password": "fwcadmin"
}{- "user": 1,
- "role": 1
}Create new user.
| customer required | number <double> |
| name required | string |
| email required | string |
| username required | string |
| password required | string |
| enabled required | number <double> |
| role required | number <double> |
| allowed_from required | string |
{- "customer": 2,
- "name": "My Personal Name",
- "email": "info@fwcloud.net",
- "username": "fwcusr",
- "password": "mysecret",
- "enabled": 1,
- "role": 1,
- "allowed_from": "10.99.4.10,192.168.1.1"
}{- "user": 5
}Update user's data.
| customer required | number <double> |
| name required | string |
| email required | string |
| username required | string |
| password required | string |
| enabled required | number <double> |
| role required | number <double> |
| allowed_from required | string |
{- "customer": 2,
- "name": "My Personal Name",
- "email": "info@fwcloud.net",
- "username": "fwcloud",
- "password": "mysecret",
- "enabled": 1,
- "role": 1,
- "allowed_from": "10.99.4.10,192.168.1.1"
}{- "fwcErr": 1002,
- "msg": "Not found"
}Modify the password of the logged user.
| password required | string |
{- "password": "mynewsecrec"
}{- "fwcErr": 1002,
- "msg": "Not found"
}Get user data.
| customer required | number <double> |
| user required | number <double> |
{- "customer": 2,
- "user": 1
}{- "id": 2,
- "customer": 2,
- "name": "My Personal Name",
- "email": "info@fwcloud.net",
- "username": "fwcusr",
- "password": "mysecret",
- "enabled": 1,
- "role": 1,
- "allowed_from": "10.99.4.10,192.168.1.1",
- "last_login": null,
- "confirmation_token": null,
- "created_at": "2019-05-13T15:11:20.000Z",
- "updated_at": "2019-05-13T15:11:20.000Z",
- "created_by": 0,
- "updated_by": 0
}Delete user from the database.
| customer required | number <double> |
{- "customer": 2
}{- "fwcErr": 1002,
- "msg": "Not found"
}Check that there are no restrictions for user deletion.
| customer required | number <double> |
| user required | number <double> |
{- "customer": 10,
- "user": 5
}{- "response": {
- "respStatus": true,
- "respCode": "ACR_OK",
- "respCodeMsg": "Ok",
- "respMsg": "",
- "errorCode": "",
- "errorMsg": ""
}, - "data": { }
}List of fwclouds to which the indicated user has access to.
| user required | number <double> |
{- "user": 5
}[- {
- "id": 4,
- "name": "FWCloud-02",
- "created_at": "2019-05-14T11:37:19.000Z",
- "updated_at": "2019-05-14T11:37:19.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": null,
- "locked_by": null,
- "locked": 0,
- "image": "",
- "comment": ""
}, - {
- "id": 5,
- "name": "FWCloud-03",
- "created_at": "2019-05-14T11:37:24.000Z",
- "updated_at": "2019-05-14T11:57:06.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": "2019-05-14T11:57:06.000Z",
- "locked_by": 1,
- "locked": 1,
- "image": "",
- "comment": ""
}
]Create new customer. Customers allow group users.
| customer required | number <double> |
| name required | string |
| addr required | string |
| phone required | string |
| email required | string |
| web required | string |
{- "customer": 1,
- "name": "FWCloud.net",
- "addr": "C/Carrasca, 7 - 03590 Altea (Alicante) - Spain",
- "phone": "+34 966 446 046",
- "email": "info@fwcloud.net",
}{- "fwcErr": 1004,
- "msg": "Already exists with the same id"
}Update customer's information.
| customer required | number <double> |
| name required | string |
| addr required | string |
| phone required | string |
| email required | string |
| web required | string |
{- "customer": 2,
- "name": "FWCloud.net",
- "addr": "C/Carrasca, 7 - 03590 Altea (Alicante) - Spain",
- "phone": "+34 966 446 046",
- "email": "info@fwcloud.net",
}{- "fwcErr": 1002,
- "msg": "Not found"
}Get customer data. If customer is empty, returns all customers with id and name.
| customer required | number <double> |
{- "customer": 2
}{- "id": 2,
- "name": "FWCloud.net",
- "addr": "C/Carrasca, 7 - 03590 Altea (Alicante) - Spain",
- "phone": "+34 966 446 046",
- "email": "info@fwcloud.net",
- "created_at": "2019-05-13T10:40:36.000Z",
- "updated_at": "2019-05-13T10:40:36.000Z",
- "created_by": 0,
- "updated_by": 0
}Delete customer from the database.
| customer required | number <double> |
{- "customer": 1
}{- "fwcErr": 1002,
- "msg": "Not found"
}Check that there are no restrictions for customer deletion.
| customer required | number <double> |
{- "customer": 10
}{- "result": true,
- "restrictions": {
- "CustomerHasUsers": true
}
}Firewall endpoints under src/routes/firewall plus src/controllers/firewalls/firewall.controller.ts
| fwcloud required | number <double> |
| firewall required | number <double> |
| rules | Array of numbers <double> [ items <double > ] |
{- "status": 200,
- "response": "OK",
- "message": "",
- "data": [
- {
- "id": 31,
- "active": true,
- "comment": "Route traffic from DMZ network through table 200",
- "cs": "$IP rule add priority 1001 from 172.16.10.0/24 table 200\n"
}
]
}| fwcloud required | number <double> |
| firewall required | number <double> |
| rules | Array of numbers <double> [ items <double > ] |
{- "status": 200,
- "response": "OK",
- "message": "",
- "data": [
- {
- "id": 12,
- "active": true,
- "cs": "# Publish HTTPS\nfrontend front_public_https\n\tmode\ttcp\n"
}
]
}| fwcloud required | number <double> |
| firewall required | number <double> |
| rules | Array of numbers <double> [ items <double > ] |
{- "status": 200,
- "response": "OK",
- "message": "",
- "data": [
- {
- "id": 8,
- "active": true,
- "cs": "subnet 10.0.10.0 netmask 255.255.255.0 {\n\toption routers 10.0.10.1;\n}\n"
}
]
}| fwcloud required | number <double> |
| firewall required | number <double> |
| rules | Array of numbers <double> [ items <double > ] |
{- "status": 200,
- "response": "OK",
- "message": "",
- "data": [
- {
- "id": 21,
- "active": true,
- "cs": "# Keepalived rule\nvrrp_script VI_eth0 {\n\tinterface eth0\n\tstate BACKUP\n}\n"
}
]
}| fwcloud required | number <double> |
| communication required | string (FirewallInstallCommunication) Enum: "ssh" "agent" |
| host required | string |
| port required | number <double> |
| username | string |
| password | string |
| protocol | string (FirewallInstallProtocol) Enum: "https" "http" |
| apikey | string |
{- "communication": "ssh",
- "host": "string",
- "port": 0.1,
- "username": "string",
- "password": "string",
- "protocol": "https",
- "apikey": "string"
}{- "status": 200,
- "response": "OK",
- "message": "",
- "data": {
- "status": "OK"
}
}| fwcloud required | number <double> |
| communication required | string (FirewallInstallCommunication) Enum: "ssh" "agent" |
| host required | string |
| port required | number <double> |
| username | string |
| password | string |
| protocol | string (FirewallInstallProtocol) Enum: "https" "http" |
| apikey | string |
{- "communication": "ssh",
- "host": "string",
- "port": 0.1,
- "username": "string",
- "password": "string",
- "protocol": "https",
- "apikey": "string"
}{- "status": 200,
- "response": "OK",
- "message": "",
- "data": {
- "fwc_agent_version": "2.5.0",
- "host_name": "fw-edge-01",
- "system_name": "Debian GNU/Linux",
- "os_version": "12",
- "kernel_version": "6.1.0-25-amd64"
}
}| fwcloud required | number <double> |
| firewallId | number <double> |
| communication required | string (FirewallInstallCommunication) Enum: "ssh" "agent" |
| host required | string |
| port required | number <double> |
| username | string |
| password | string |
| protocol | string (FirewallInstallProtocol) Enum: "https" "http" |
| apikey | string |
| plugin required | string (PluginsFlags) Enum: "openvpn" "geoip" "crowdsec" "ntopng" "suricata" "keepalived" "zeek" "elasticsearch" "filebeat" "websafety" "kibana" "logstash" "dnssafety" "isc-bind9" "isc-dhcp" "haproxy" "wireguard" "ipsec" "irqbalance" |
| enable required | boolean |
{- "firewallId": 0.1,
- "communication": "ssh",
- "host": "string",
- "port": 0.1,
- "username": "string",
- "password": "string",
- "protocol": "https",
- "apikey": "string",
- "plugin": "openvpn",
- "enable": true
}{- "status": 200,
- "response": "OK",
- "message": "",
- "data": ""
}Create a new firewall.
| fwcloud required | number <double> |
| name required | string |
| save_user_pass required | number <double> |
| install_port required | number <double> |
| fwmaster required | number <double> |
| options required | number <double> |
| node_id required | number <double> |
{- "fwcloud": 1,
- "name": "Firewall-01",
- "save_user_pass": 0,
- "install_port": 22,
- "fwmaster": 0,
- "options": 0,
- "node_id": 1
}{- "insertId": 1
}Update firewall information.
| fwcloud required | number <double> |
| firewall required | number <double> |
| name required | string |
| comment required | string |
| save_user_pass required | number <double> |
| install_port required | number <double> |
| fwmaster required | number <double> |
| options required | number <double> |
{- "fwcloud": 1,
- "firewall": 5,
- "name": "Firewall-UPDATED",
- "comment": "Comment for the updated firewall.",
- "save_user_pass": 0,
- "install_port": 22,
- "fwmaster": 0,
- "options": 3
}{- "fwcErr": 7001,
- "msg": "Firewall access not allowed"
}Get firewall data.
| fwcloud required | number <double> |
| firewall required | number <double> |
{- "fwcloud": 1,
- "firewall": 5
}{- "id": 5,
- "cluster": null,
- "fwcloud": 1,
- "name": "Firewall-05",
- "comment": null,
- "created_at": "2019-05-15T10:34:46.000Z",
- "updated_at": "2019-05-15T10:34:47.000Z",
- "compiled_at": null,
- "installed_at": null,
- "by_user": 1,
- "status": 3,
- "install_user": "",
- "install_pass": "",
- "save_user_pass": 0,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 0,
- "install_port": 22,
- "options": 0,
- "interface_name": null,
- "ip_name": null,
- "ip": null,
- "id_fwmaster": null
}Get firewalls data by fwcloud.
| fwcloud required | number <double> |
{- "fwcloud": 1
}[- {
- "id": 1,
- "cluster": null,
- "fwcloud": 1,
- "name": "Firewall-01",
- "comment": null,
- "created_at": "2019-05-15T10:34:46.000Z",
- "updated_at": "2019-05-15T10:34:47.000Z",
- "compiled_at": null,
- "installed_at": null,
- "by_user": 1,
- "status": 3,
- "install_user": "",
- "install_pass": "",
- "save_user_pass": 0,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 0,
- "install_port": 22,
- "options": 0,
- "interface_name": null,
- "ip_name": null,
- "ip": null,
- "id_fwmaster": null
}, - {
- "id": 2,
- "cluster": null,
- "fwcloud": 1,
- "name": "Firewall-02",
- "comment": null,
- "created_at": "2019-05-15T10:34:46.000Z",
- "updated_at": "2019-05-15T10:34:47.000Z",
- "compiled_at": null,
- "installed_at": null,
- "by_user": 1,
- "status": 3,
- "install_user": "",
- "install_pass": "",
- "save_user_pass": 0,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 0,
- "install_port": 22,
- "options": 0,
- "interface_name": null,
- "ip_name": null,
- "ip": null,
- "id_fwmaster": null
}
]Get firewalls data by cluster.
| fwcloud required | number <double> |
| cluster required | number <double> |
{- "fwcloud": 1,
- "cluster": 2
}[- {
- "id": 1,
- "cluster": 2,
- "fwcloud": 1,
- "name": "Firewall-01",
- "comment": null,
- "created_at": "2019-05-15T10:34:46.000Z",
- "updated_at": "2019-05-15T10:34:47.000Z",
- "compiled_at": null,
- "installed_at": null,
- "by_user": 1,
- "status": 3,
- "install_user": "",
- "install_pass": "",
- "save_user_pass": 0,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 1,
- "install_port": 22,
- "options": 0,
- "interface_name": null,
- "ip_name": null,
- "ip": null,
- "id_fwmaster": null
}, - {
- "id": 2,
- "cluster": 2,
- "fwcloud": 1,
- "name": "Firewall-02",
- "comment": null,
- "created_at": "2019-05-15T10:34:46.000Z",
- "updated_at": "2019-05-15T10:34:47.000Z",
- "compiled_at": null,
- "installed_at": null,
- "by_user": 1,
- "status": 3,
- "install_user": "",
- "install_pass": "",
- "save_user_pass": 0,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 0,
- "install_port": 22,
- "options": 0,
- "interface_name": null,
- "ip_name": null,
- "ip": null,
- "id_fwmaster": null
}
]Create a new firewall cloning the one indicated in the request's parameters.
| fwcloud required | number <double> |
| firewall required | number <double> |
| name required | string |
| comment required | string |
| node_id required | number <double> |
{- "fwcloud": 1,
- "firewall": 5,
- "name": "Firewall-CLONED",
- "comment": "Comment for the cloned firewall.",
- "node_id": 1
}{- "insertId": 7
}Delete a firewall.
| fwcloud required | number <double> |
| firewall required | number <double> |
{- "fwcloud": 1,
- "firewall": 7
}{- "fwcErr": 7001,
- "msg": "Firewall access not allowed"
}Create a new cluster of firewalls.
| fwcloud required | number <double> |
| node_id required | number <double> |
required | object |
{- "fwcloud": 3,
- "node_id": 391,
- "clusterData": {
- "name": "Cluster-01",
- "options": 3,
- "fwnodes": [
- {
- "name": "node1",
- "comment": null,
- "install_user": null,
- "install_pass": null,
- "save_user_pass": 1,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 1,
- "install_port": 22
}, - {
- "name": "node2",
- "comment": null,
- "install_user": null,
- "install_pass": null,
- "save_user_pass": 1,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 0,
- "install_port": 22
}, - {
- "name": "node3",
- "comment": null,
- "install_user": null,
- "install_pass": null,
- "save_user_pass": 1,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 0,
- "install_port": 22
}
]
}
}{- "insertId": 1,
- "loData": { }
}Update cluster data.
| fwcloud required | number <double> |
required | object |
{- "fwcloud": 2,
- "clusterData": {
- "cluster": 5,
- "name": "Cluster-UPDATED",
- "options": 3
}
}{- "fwcErr": 1002,
- "msg": "Not found"
}Get cluster data.
| fwcloud required | number <double> |
| cluster required | number <double> |
{- "fwcloud": 2,
- "cluster": 5
}{- "id": 2,
- "fwcloud": 2,
- "name": "Cluster-02",
- "comment": null,
- "created_at": "2019-05-17T11:47:00.000Z",
- "updated_at": "2019-05-17T11:47:00.000Z",
- "created_by": 0,
- "updated_by": 0,
- "nodes": [
- {
- "id": 10,
- "cluster": 2,
- "name": "node1",
- "comment": null,
- "status": 3,
- "install_user": "",
- "install_pass": "",
- "save_user_pass": 1,
- "install_interface": null,
- "install_ipobj": null,
- "fwmaster": 1,
- "install_port": 22,
- "interface_name": null,
- "ip_name": null,
- "ip": null,
- "options": 3
}
]
}Get all the cluster data for the indicated fwcloud.
| fwcloud required | number <double> |
{- "fwcloud": 2
}[- {
- "id": 1,
- "fwcloud": 2,
- "name": "Cluster-01",
- "comment": null,
- "created_at": "2019-05-17T11:46:57.000Z",
- "updated_at": "2019-05-17T11:46:57.000Z",
- "created_by": 0,
- "updated_by": 0
}, - {
- "id": 2,
- "fwcloud": 2,
- "name": "Cluster-02",
- "comment": null,
- "created_at": "2019-05-17T11:47:00.000Z",
- "updated_at": "2019-05-17T11:47:00.000Z",
- "created_by": 0,
- "updated_by": 0
}
]Convert a firewall into a new cluster.
| fwcloud required | number <double> |
| firewall required | number <double> |
| node_id required | number <double> |
{- "fwcloud": 2,
- "firewall": 5,
- "node_id": 391
}{- "result": true,
- "insertId": 6
}Convert a cluster into a single firewall.
| fwcloud required | number <double> |
| cluster required | number <double> |
| node_id required | number <double> |
{- "fwcloud": 2,
- "cluster": 6,
- "node_id": 391
}{- "result": true,
- "insertId": 12
}Clone an existing cluster.
| fwcloud required | number <double> |
| cluster required | number <double> |
| name required | string |
| comment required | string |
| node_id required | number <double> |
{- "fwcloud": 2,
- "cluster": 5,
- "name": "Cluster-CLONED",
- "comment": "Comment for cloned cluster.",
- "node_id": 391
}{- "insertId": 7
}Check if there are restrictions for cluster deletion.
| fwcloud required | number <double> |
| cluster required | number <double> |
{- "fwcloud": 2,
- "cluster": 5
}{- "result": true,
- "restrictions": {
- "FirewallHasInterfaces": true
}
}Delete cluster.
| fwcloud required | number <double> |
| cluster required | number <double> |
{- "fwcloud": 2,
- "cluster": 5
}{- "fwcErr": 1002,
- "msg": "Not found"
}Create a new FWCloud.
| name required | string |
| image required | string |
| comment required | string |
{- "name": "FWCloud-01",
- "image": "",
- "comment": "Main customer cloud"
}{- "status": 201,
- "response": "Created",
- "message": "",
- "data": {
- "id": 1,
- "name": "FWCloud-01",
- "created_at": "2019-05-14T11:37:19.000Z",
- "updated_at": "2019-05-14T11:37:19.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": null,
- "locked_by": null,
- "locked": 0,
- "image": "",
- "comment": "Main customer cloud"
}
}Update an existing FWCloud.
| fwcloud required | number <double> |
| name required | string |
| image required | string |
| comment required | string |
{- "name": "FWCloud-01-Updated",
- "image": "",
- "comment": "Updated description"
}{- "status": 200,
- "response": "OK",
- "message": "",
- "data": {
- "id": 1,
- "name": "FWCloud-01-Updated",
- "created_at": "2019-05-14T11:37:19.000Z",
- "updated_at": "2019-05-14T11:57:06.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": null,
- "locked_by": null,
- "locked": 0,
- "image": "",
- "comment": "Updated description"
}
}Get FWCloud color usage details.
| fwcloud required | number <double> |
{- "status": 200,
- "response": "OK",
- "message": "",
- "data": [
- {
- "color": "#4CAF50",
- "count": 14
}, - {
- "color": "#2196F3",
- "count": 6
}, - {
- "color": "#FF9800",
- "count": 2
}
]
}{- "status": 200,
- "response": "OK",
- "message": "",
- "data": {
- "availablecommunications": [
- "agent",
- "ssh"
], - "auditLogs": {
- "internal": {
- "enabled": true,
- "cron": {
- "enabled": true
}, - "worker": {
- "enabled": true
}, - "importer": {
- "enabled": true
}
}
}
}
}Get fwcloud data for all the fwclouds to which the logged user has access.
[- {
- "id": 4,
- "name": "FWCloud-02",
- "created_at": "2019-05-14T11:37:19.000Z",
- "updated_at": "2019-05-14T11:37:19.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": null,
- "locked_by": null,
- "locked": 0,
- "image": "",
- "comment": ""
}, - {
- "id": 5,
- "name": "FWCloud-03",
- "created_at": "2019-05-14T11:37:24.000Z",
- "updated_at": "2019-05-14T11:57:06.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": "2019-05-14T11:57:06.000Z",
- "locked_by": 1,
- "locked": 1,
- "image": "",
- "comment": ""
}
]Get fwcloud data.
| fwcloud required | number <double> |
{- "fwcloud": 3
}{- "id": 3,
- "name": "FWCloud-Updated",
- "created_at": "2019-05-14T11:37:15.000Z",
- "updated_at": "2019-05-14T11:37:54.000Z",
- "created_by": 0,
- "updated_by": 0,
- "locked_at": "2019-05-14T11:37:51.000Z",
- "locked_by": 1,
- "locked": 1,
- "image": "",
- "comment": "Comment for the updated fwcloud."
}Check if the fwcloud indicated as a parameter has any deletion restriction.
| fwcloud required | number <double> |
{- "fwcloud": 2
}{- "fwcErr": 7000,
- "msg": "FWCloud access not allowed"
}Delete the firewall cloud indicated in the request body.
| fwcloud required | number <double> |
{- "fwcloud": 2
}{- "fwcErr": 7000,
- "msg": "FWCloud access not allowed"
}Lock fwcloud status.
| fwcloud required | number <double> |
{- "fwcloud": 2
}{- "result": true,
- "message": "FWCLOUD LOCKED OK"
}Unlock fwcloud status.
| fwcloud required | number <double> |
{- "fwcloud": 2
}{- "result": true,
- "message": "FWCLOUD UNLOCKED OK"
}Force unlock fwcloud status.
| fwcloud required | number <double> |
{- "fwcloud": 2
}{- "result": true,
- "message": "FWCLOUD FORCE UNLOCKED OK"
}