Skip to main content

Nodehub

Nodehub is a marketplace service for storing node data such as primary node registry as well as definitions for composite nodes. This service allows organizations to publish custom composite nodes, fork them and create different versions of those composite nodes. This service also serves as an exaustive list of all available primary nodes.

Fork a Node

POST
/node/fork/{NODE_ID} Fork a node under the user org.

Headers

NameTypeRequiredDescription
AuthorizationStringYESJWT token of the logged in user.

Request Body

NameTypeRequiredDescription
nameStringYESName of the composite node.

Curl Request

curl --location '{BASE_URL}/node/fork/{NODE_ID}' \
--header 'Authorization: {AUTH_TOKEN}' \
--header 'Content-Type: application/json' \
--data '{
"name": "myForkedNode"
}'

Get All Nodes

GET
/node Get meta data of all nodes in marketplace.

Headers

NameTypeRequiredDescription
AuthorizationStringYESJWT token of the logged in user.
note

This API does not retrieve any private nodes that are not a part of the user's organization.

Curl Request

curl --location '{BASE_URL}/node' \
--header 'Authorization: {AUTH_TOKEN}'

Get Single Node Data

GET
/node/{NODE_ID} Get all data for a single composite node.

Headers

NameTypeRequiredDescription
AuthorizationStringYESJWT token of the logged in user.
note

This API does not retrieve any private nodes that are not a part of the user's organization.

Curl Request

curl --location '{BASE_URL}/node/{NODE_ID}' \
--header 'Authorization: {AUTH_TOKEN}'

Get All Watched Nodes

GET
/watched Get data of all primary and watched composite nodes.

Headers

NameTypeRequiredDescription
AuthorizationStringYESJWT token of the logged in user.
note

This API does not retrieve any private nodes that are not a part of the user's organization.

Curl Request

curl --location '{BASE_URL}/node/watched' \
--header 'Authorization: {AUTH_TOKEN}'

Publishing a Node

POST
/node/publish Publish a composite node under an org.

Headers

NameTypeRequiredDescription
AuthorizationStringYESJWT token of the logged in user.

Request Body

NameTypeRequiredDescription
nameStringYESName of the composite node.
isPublicBooleanNOWhether this node should be publically accessible or not. By default this is set to false.
schemaJSONYESThe schema that defines how this composite node should be rendered on flowise as a single node. Take a look at Node Schema section to learn more about schema.
definitionJSONYESThe actual definiton of the composite node. This is the entire flowise JSON output of a specific diagram.

Curl Request

curl --location '{BASE_URL}/node/publish' \
--header 'Authorization: {AUTH_TOKEN}' \
--header 'Content-Type: application/json' \
--data '{
"name": "myCompositeNode1",
"isPublic": false,
"schema": {
"class": "GenericTransformer",
"description": "My description 1",
"label": "my node label 1",
"type": "HTTP_GET",
"version": 2,
"outputType": "dynamic",
"inputs": [
{
"label": "my input label 1",
"name": "my input name 1",
"optional": true,
"type": "string",
"rows": 2
}
],
"outputs": [
{
"label": "my output label 1",
"name": "my input label 1"
}
]
},
// Note: This does not represent an actual working definition.
"definition": {
"nodes": [
{"id": "my_node_id", "inputs": [], "outputs": []},
{"id": "my_node_id_2", "inputs": [], "outputs": []},
{"id": "my_node_id_3", "inputs": [], "outputs": []}
],
"edges": [
{ "from": "my_node_id", "to": "my_node_id_2" }
]
}
}'

Watch a Node

POST
/node/watch/{NODE_ID} Watch a composite node to track it in flowise.

Headers

NameTypeRequiredDescription
AuthorizationStringYESJWT token of the logged in user.

Curl Request

curl --location --request POST '{BASE_URL}/node/watch/{NODE_ID}' \
--header 'Authorization: {AUTH_TOKEN}'

Node Schema

Below is the schema for a node that defines how a node is rendered on flowise.

{
"label": "string",
"type": "string",
"class": "string",
"description": "string",
"version": "number",
"outputType": "dynamic" | "static",
"inputs": {
"label": "string",
"name": "string",
"type": "string" | "json" | "ide" | "number" | "boolean",
"optional": "Boolean",
"rows": "number" | "undefined",
}[],
"outputs": {
"label": "string",
"name": "string",
}[],
}

Here is a description of all the relevant fields.

NameTypeRequiredDescription
labelstringYesThe label of the main object.
typestringYesThe type of the main object.
classstringYesThe class of the main object.
descriptionstringYesDescription of the main object.
versionnumberYesVersion number of the object.
outputTypeenum ("dynamic" or "static")YesThe output type of the object, either "dynamic" or "static".
inputsarray of objectsYesAn array of input objects with the following fields:
inputs.labelstringYesThe label for each input.
inputs.namestringYesThe name of each input.
inputs.typeenum ("string", "json", "ide", "number", "boolean")YesThe type of each input.
inputs.optionalbooleanYesIndicates if the input is optional.
inputs.rowsnumber or undefinedNoThe number of rows if applicable, otherwise undefined.
outputsarray of objectsYesAn array of output objects with the following fields:
outputs.labelstringYesThe label for each output.
outputs.namestringYesThe name of each output.