Skip to main content

Web modeler SDK

The web modeler SDK Description

The web modeler SDK is available in the web modeler, It allows users access resources from user interface and execute complexe computational in the user interface run time.

The SDK has the following classes

class SoftyFlow {}
class Collection {}
class SQLDatabase {}
class CustomList {}
class Report {}
class Instance {}
class Task {}
class Api {}
class Email {}
class File {}

In the following sections we will explicit each class and the allowed methods.

1 - SoftyFlow


The SoftyFlow class has the SoftyFlow system methods

Usage

This class is instantiated by default as object named SF when the user interface is loaded, so you can use methods directly by calling them via object "SF"

//using SF object
let currentMode = this.SF.getSF_mode();

getSF_mode

Is a function that return the mode of the running user interface

Returns

TypeDescription
stringReturn string ('test', 'uat', 'prod')

Examples

let currentMode = this.SF.getSF_mode();

getSF_Version

Is a function that return the version of the running user interface

Returns

TypeDescription
stringReturn string ('test', 'uat', 'prod')

Examples

let currentVersion = this.SF.getSF_Version();

queryParams

Is a function that return the query parameters

paramsDescription
selectoptional. The fields to select (fields: SF_mode, SF_version, SF_screen)

Parameters

NameTypeDescription
selectstringThe selected fields

Returns

TypeDescription
stringReturn string

Examples

let currentMode = this.SF.getSF_mode('SF_mode SF_version');
console.log(currentMode)
// ?SF_mode=test&SF_version=versionId

startProcess

Is a function that start specific process

Parameters

NameTypeDescription
idstringProcess id
bodyobjectJson of process variables

Returns

TypeDescription
promiseReturn promise

Examples

let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.startProcess('processId', variables);

validateCaptcha

Is a function that validates a Google reCAPTCHA v3 action and returns the generated token.

Parameters

NameTypeDescription
actionstringThe action name used for reCAPTCHA v3 verification.

Returns

TypeDescription
Promise<string>Returns a Promise that resolves to the reCAPTCHA token string.

Examples

let token = await SF.utils.validateCaptcha("login_form");
// returns: '03AFcWeA... (a long token string from Google)'

saveNew

Is a function that allow to you to save the user interface state

Parameters

NameTypeDescription
idstringinterface id
bodyobjectJson of interface variables

Returns

TypeDescription
promiseReturn promise

Examples

let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.saveNew('interfaceId', variables);

saveTask

Is a function that allow to you to save the task interface state

Parameters

NameTypeDescription
idstringtask id
bodyobjectJson of task variables

Returns

TypeDescription
promiseReturn promise

Examples

let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.saveTask('taskId', variables);

validateTask

Is a function that allow to validate Task

Parameters

NameTypeDescription
idstringtask id
bodyobjectJson of task variables

Returns

TypeDescription
promiseReturn promise

Examples

let variables = {
"variable1": "value1",
"variable2": 1,
"variable3": true
}
await this.SF.validateTask('taskId', variables);

getUserPendingTask

Is a function that allow to get pending Task assigned to connected user.

Parameters

NameTypeDescription
limitstringlimit of result per page.
pagestringnumber of page
dueDatestringrelated date.
fieldsstringfileds.

Returns

TypeDescription
promiseReturn promise

Examples

await this.SF.getUserPendingTask('limit', 'page', 'dueDate', 'fields');

uploadImage

Is a function that uploads an image to the server using a multipart/form-data POST request.

Parameters

NameTypeDescription
dataFormDataA FormData object containing the image file and any additional metadata.

Returns

TypeDescription
Promise<object>Returns a Promise that resolves to the response data from the server.

Examples

const formData = new FormData();
formData.append("profileImage", file);

let response = await SF.utils.uploadImage(formData);
// returns: { success: true, imageUrl: "/uploads/user123.png" }

setListFromCollection

Is a function that allow to set list of data from a specific collection.

Parameters

NameTypeDescription
collectionstringcollection ID.
criteriaobjectQuery json.
limitstringlimit of result.
sortstringsort option.

Returns

TypeDescription
promiseReturn promise

Examples

let criteria = { 
firstName: new RegExp("p", "i")
}
await this.SF.setListFromCollection('collectionId', criteria, 10, 'sort');

setListFromCollectionAggregation

Is a function that performs an aggregation operation on a specified collection using the provided aggregation pipeline.

Parameters

NameTypeDescription
collectionstringThe name or ID of the target collection to aggregate.
aggregArray<object>An array of aggregation pipeline stages (MongoDB aggregation framework).

Returns

TypeDescription
Promise<Array>Returns a Promise that resolves to the result of the aggregation query.

Examples

let results = await SF.utils.setListFromCollectionAggregation("users", [
{ $match: { age: { $gte: 18 } } },
{ $group: { _id: "$country", count: { $sum: 1 } } }
]);
// returns: [ { _id: "USA", count: 42 }, { _id: "FR", count: 18 } ]

setListFromReport

Is a function that performs a dynamic aggregation query on a report collection, using filters, sorting, and limit options.

Parameters

NameTypeDescription
reportstringThe ID or name of the report collection.
queryobjectAn object representing filter conditions using custom or MongoDB operators.
[limit]number(Optional) Limits the number of returned documents.
[sort]object(Optional) Sorting options with by field and direction (-1 or 1).

Returns

TypeDescription
Promise<Array>Returns a Promise that resolves to the result of the aggregation.

Examples

let result = await SF.utils.setListFromReport("monthly_sales", {
SF_createdBy: "admin@example.com",
region: "NA"
}, 10, { by: "createdAt", direction: -1 });
// returns: [ { ... }, { ... } ]

setListFromReportAggregation

Is a function that performs a custom aggregation on a report instance using a provided aggregation pipeline.

Parameters

NameTypeDescription
reportstringThe ID or name of the report collection.
aggregArray<object>The aggregation pipeline to execute.

Returns

TypeDescription
Promise<Array>Returns a Promise that resolves to the result of the aggregation.

Examples

let data = await SF.utils.setListFromReportAggregation("monthly_reports", [
{ $match: { status: "completed" } },
{ $group: { _id: "$region", total: { $sum: "$amount" } } }
]);
// returns: [ { _id: "Europe", total: 24000 }, { _id: "Asia", total: 18000 } ]

setListFromSQL

Is a function that allow to set list of data from client database.

Parameters

NameTypeDescription
clientDatabasestringclientDatabase ID.
querystringQuery table.

Returns

TypeDescription
promiseReturn promise

Examples

await this.SF.setListFromSQL('clientDatabaseID', "code='MMA'");

setListFromCustomList

Is a function that allow to set list of data from CustomList.

Parameters

NameTypeDescription
CustomListstringCustomList ID.

Returns

TypeDescription
promiseReturn promise

Examples

await this.SF.setListFromCustomList('CustomListID');

aggregateQuery

Is a function that allow to set list of data from CustomList.

Parameters

NameTypeDescription
typestringtype of the resource (collection, report, users, projects, external databases).
idstringId of the resource.
queryobjectJson of a value to be matched in the resource.

Returns

TypeDescription
promiseReturn promise

Examples

await this.SF.aggregateQuery('collection', '610c0343f6ebc7ddcb49cc3b', {value : "it"});

deleteFile

Is a function that allow to delete a file using it ID.

Parameters

NameTypeDescription
idstringId of the resource.

Returns

TypeDescription
promiseReturn promise

Examples

await this.SF.deleteFile('610c0343f6ebc7ddcb49cc3b');

2 - Projects


The Projects class has the methods that will allow you to manage the projects.

Usage

const projects = new Projects({ mode: 'test' });

aggregate

Aggregation operations process data records and return computed results

Parameters

NameTypeDescription
aggregationarrayaggregation array

Returns

TypeDescription
promiseReturn promise

Examples

let aggregation = [
{
"$match": { "status": "active" }
},
{
"$group": {
"_id": "$category",
"total": { "$sum": 1 }
}
}
]
let results = await projects.aggregate(aggregation);

3 - Users


The Users class has the methods that will allow you to manage the users.

Usage

const users = new Users();

create

Allow to create new user.

Parameters

NameTypeDescription
dataobjectJson content user data

Returns

TypeDescription
promiseReturn promise

Data

This is the allowed user data:

fieldDescription
emailRequired and Unique. The user email (string)
lastNameRequired. The user last name (string)
firstNameRequired. The user first name (string)
groupRequired. The user groups ids (array)
metadataoptional. The user metadata (json)
ideAccessRequired. IDE access right (boolean)
blockedoptional. User blocking (boolean)

Examples

let user = {
email: "email@softydev.com",
lastName : "last name",
firstName: "first name",
group: [],
metadata: {},
ideAccess: true,
blocked: false
}
await users.create(user);

update

Allow to update a user

Parameters

NameTypeDescription
idstringuser id.
dataobjectUser data.

Returns

TypeDescription
promiseReturn promise

Data

The same allowed data in creation of user. The fields are optional.

Examples

let newData = {
ideAccess: false
}
await users.update("userId", newData);

delete

Allow to delete a user.

Parameters

NameTypeDescription
idstringuser id.

Returns

TypeDescription
promiseReturn promise

Examples

await users.delete("userId");

findById

Allow to get a user by id.

Parameters

NameTypeDescription
idstringuser id.

Returns

TypeDescription
promiseReturn promise

Examples

let user = await users.findById("userId");

find

Allow to list the users.

Parameters

NameTypeDescription
criteriaobjectQuery json.

Returns

TypeDescription
promiseReturn promise

Examples

let criteria = { 
firstName: new RegExp("p", "i")
}
let usersList = await users.find(criteria);

count

Allow to get the count of users.

Parameters

NameTypeDescription
criteriaobjectQuery json

Returns

TypeDescription
promiseReturn promise

Examples

let criteria = { 
blocked: false
}
let count = await users.count(criteria);

findAndCount

get a list and the count of users

Parameters

NameTypeDescription
bodyobjectJson of options.

Returns

TypeDescription
promiseReturn promise

Options

This options are optional

OptionDescription
criteriaSpecifies selection filter (default : {})
fieldsSelect specific fields (example: "createdAt email")
limitNumber of instances returned (default : 100/ no limit : 0)
pagePage number depends on the limit (default : 0)
sortbySorts the results by key (default : createdAt)
directionAscending (1) or descending (-1) order (default : -1)

Examples

let body = {
criteria: {
firstName: new RegExp("p", "i")
},
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let res = await users.findAndCount(body);
let usersList = res.data;
let count = res.count;

aggregate

Aggregation operations process data records and return computed results

Parameters

NameTypeDescription
aggregationarrayaggregation array

Returns

TypeDescription
promiseReturn promise

Examples

let aggregation = [
{
"$match": { "firstName": new RegExp("z", "i") }
},
{
"$project" : {
"_id": 1,
"firstName": 1,
"lastName": 1,
"email": 1
}
}
]
let usersList = await users.aggregate([aggregation]);

addRole

Add role to user using user ID & group ID.

Parameters

NameTypeDescription
userIdstringuser ID.
groupidstringgroup ID.
modestringmode of the running user. interface

Returns

TypeDescription
promiseReturn promise

Examples

await users.addRole("userId","groupId","SF_mode");

removeRole

Remove role from user using user ID & group ID.

Parameters

NameTypeDescription
userIdstringuser ID.
groupidstringgroup ID.
modestringmode of the running user interface

Returns

TypeDescription
promiseReturn promise

Examples

await users.removeRole("userId","groupId","SF_mode");

4 - Groups


The Groups class has the methods that will allow you to manage user groups.

Usage

const groups = new Groups();

findById

Find a group by its unique identifier.

Parameters

NameTypeDescription
idstringGroup ID

Returns

TypeDescription
promiseReturns group data

Examples

let group = await groups.findById("groupId123");

find

Find groups based on a filter criteria.

Parameters

NameTypeDescription
criteriaobjectSearch criteria object

Returns

TypeDescription
promiseReturns array of groups

Examples

let list = await groups.find({ name: /admin/i });

count

Count the number of groups that match the criteria.

Parameters

NameTypeDescription
criteriaobjectFilter criteria

Returns

TypeDescription
promiseReturns count

Examples

let total = await groups.count({ type: "system" });

findAndCount

Find groups and return both the results and the total count.

Parameters

NameTypeDescription
bodyobjectRequest body with filters and pagination

Returns

TypeDescription
promiseReturns object { data, count }

Examples

let result = await groups.findAndCount({ limit: 10, offset: 0 });

aggregate

Aggregation operations process data records and return computed results.

Parameters

NameTypeDescription
aggregationarrayAggregation pipeline array

Returns

TypeDescription
promiseReturns aggregation result

Examples

let aggregation = [
{ $match: { type: "system" } },
{ $group: { _id: "$status", total: { $sum: 1 } } }
];
let stats = await groups.aggregate(aggregation);

create

Create a new group with provided data.

Parameters

NameTypeDescription
bodyobjectGroup data

Returns

TypeDescription
promiseReturns created group

Examples

let newGroup = await groups.create({ name: "Developers", type: "custom" });

update

Update an existing group by ID.

Parameters

NameTypeDescription
idstringGroup ID
bodyobjectUpdate payload

Returns

TypeDescription
promiseReturns updated group

Examples

let updated = await groups.update("groupId123", { name: "Admins Updated" });

delete

Delete a group by ID.

Parameters

NameTypeDescription
idstringGroup ID

Returns

TypeDescription
promiseReturns deletion result

Examples

await groups.delete("groupId123");

groupUsers

Retrieve the users belonging to a specific group.

Parameters

NameTypeDescription
idstringGroup ID

Returns

TypeDescription
promiseReturns array of users in the group

Examples

let users = await groups.groupUsers("groupId123");

5 - Collection


The collection class has the methods that will allow you to manage your collection

Usage

You can instantiate a Collection class with id or name of collection. You can add mode option

OptionDescription
idRequired. id or name of collection
modeoptional. Specifies mode of collection (default : "test")
const collection = new Collection({ id: 'collectionId', mode: 'test' });

insert

Allow to insert a json into a collection

Parameters

NameTypeDescription
dataobjectJson of a value to be inserted in to the collection.

Returns

TypeDescription
promiseReturn promise

Examples

await collection.insert({ name: "name1", type : "type1" });

insertMany

Allow to insert an array of json in to a collection.

Parameters

NameTypeDescription
dataobjectJson of a value to be inserted in to the collection.

Returns

TypeDescription
promiseReturn promise

Examples

await collection.insertMany([{label : "IT", value : "it"}]);

updateMany

update all the documents that satisfies the specified query criteria .

Parameters

NameTypeDescription
criteriaobjectQuery json.
dataobjectJson of a new data.
optionsobjectJson of options

Returns

TypeDescription
promiseReturn promise

Examples

let criteria = { 
firstName: new RegExp("p", "i")
}
await collection.updateMany(criteria, [{ type : "type2" }], { upsert: true });

update

Allow to update a document in collection

Parameters

NameTypeDescription
idstringDocument id.
dataobjectJson of a new data.

Returns

TypeDescription
promiseReturn promise

Examples

await collection.update("documentId", { type : "type2" });

delete

Allow to delete a document from collection

Parameters

NameTypeDescription
idstringDocument id.

Returns

TypeDescription
promiseReturn promise

Examples

await collection.delete("documentId");

findById

Allow to get a object by id from the collection

Parameters

NameTypeDescription
idstringDocument id.

Returns

TypeDescription
promiseReturn promise

Examples

let document = await collection.findById(id);

find

Allow to select the documents in a collection

Parameters

NameTypeDescription
bodyobjectJson of options.

Returns

TypeDescription
promiseReturn promise

Options

This options are optional

OptionDescription
criteriaSpecifies selection filter (default : {})
limitNumber of documents returned (default : 100/ no limit : 0)
pagePage number depends on the limit (default : 0)
sortbySorts the results by key (default : createdAt)
directionAscending (1) or descending (-1) order (default : -1)

Examples

let body = {
criteria: {
name: new RegExp("p", "i"),
type: "type1"
},
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let documents = await collection.find(body);

count

Allow to get the count of documents that would match a query for the collection

Parameters

NameTypeDescription
criteriaobjectQuery json

Returns

TypeDescription
promiseReturn promise

Examples

let count = await collection.count({ type: "type1" });

aggregate

Aggregation operations process data records and return computed results

Parameters

NameTypeDescription
aggregationarrayaggregation array

Returns

TypeDescription
promiseReturn promise

Examples

let aggregation = [
{
"$match": { "type": "type1" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
let documents = await collection.aggregate([aggregation]);

6 - SQLDatabase


Manage your external SQL Databases Through the SQLDatabase class.

Usage

You can instantiate an SQL class with id and mode(optional).

OptionDescription
idRequired. id or name of Database
modeoptional. Specifies mode of Database (default : "test")
const sql = new SQLDatabase({ id: '610c0343f6ebc7ddcb49cc3b', mode: 'test' });

findOne

Get a table row data

Parameters

NameTypeDescription
tableNamestringtable name.
Criteriastringquery table.

Returns

TypeDescription
object

Examples

let res = await sql.findOne("client", "code='MMA'"))

find

list multiple rows from sql table

Parameters

NameTypeDescription
tableNamestringtable name.
optionsstringquery table.

Returns

TypeDescription
array

Examples

let res = sql.find("client", "code='MMA'")

count

Get the row count for a table with a criteria

Parameters

NameTypeDescription
tableNamestringtable name.
optionsstringquery table.

Returns

TypeDescription
arrayarray with one element contining count

Examples

let count = await sql.count("client", "code='MMA'");

execute

Execute a custom query on the database.

Parameters

NameTypeDescription
querystringstring of query.

Returns

TypeDescription
arrayReturn array.

Examples

sql.execute("INSERT INTO client(code, intitule, representant, codepostal) VALUES('MDSX', 'holder', 'holder', 14000)")

insert

Insert one row into a table.

Parameters

NameTypeDescription
tableNamestringtable name.
dataobjectJSON body.

Returns

TypeDescription
array

Examples

sql.insert("client", {
code: 'HelloWord',
codepostal: 14000
}

insertMany

Insert multiple rows into

Parameters

NameTypeDescription
tableNamestringtable name.
dataarrayJSON body.

Returns

TypeDescription
array

Examples

sql.insertMany("client", [
{ code: '#1' },
{ code: '#2' }
])

update

Update rows.

Parameters

NameTypeDescription
tableNamestringtable name.
querystringquery table.
dataobjectupdated JSON body.

Returns

TypeDescription
object

Examples

 sql.update('client',   "code='MMA'",
{
code: "MQS"
})

delete

Delete row/rows in your table.

Parameters

NameTypeDescription
tableNamestringtable name.
querystringquery table.

Returns

TypeDescription
object

Examples

sql.delete("client", "id=223")

7 - CustomList


The CustomList class has the methods that will allow you to manage your Custom List

Usage

You can instantiate a CustomList class with id of custom list. You can add other options (mode, versionId)

OptionDescription
idRequired. id of custom list
modeoptional. Specifies mode of custom list (default : "test")
versionIdoptional. id of the version from which to get the custom list
const customList = new CustomList({id: 'id', mode: 'test', versionId: "vId"});

get

Get a custom list data

Returns

TypeDescription
promiseReturn promise

Examples

let customListData = await customList.get();

8 - Report


The Report class will allow you to manipulate specific report

Usage

You can instantiate a Report class with id of report. You can add mode option

OptionDescription
idRequired. Specifies mode of custom list (default : "test")
modeoptional. Specifies mode of custom list (default : "test")
const report = new Report({id: 'id', mode: 'test'});

aggregate

Aggregation operations process data records and return computed results

Parameters

NameTypeDescription
aggregationarrayaggregation array

Returns

TypeDescription
promiseReturn promise

Examples

let aggregation = [
{
"$match": { "SF_status": "Running" }
},
{
"$sort": { "SF_createdAt": -1 }
}
]
let instances = await report.aggregate(aggregation); //report of instances

9 - Instance


The Instance class has the methods that will allow you to manage the instances

Usage

const inctance = new Instance();

findById

Get a instance by id

Parameters

NameTypeDescription
idstringid of instance.

Returns

TypeDescription
promiseReturn promise

Examples

let oneInctance = await inctance.findById(id);

find

list the instances

Parameters

NameTypeDescription
criteriaobjectJson of query.

Returns

TypeDescription
promiseReturn promise

Examples

let instances = await inctance.find({ status: "Running" });

count

Allow to get the count of instances that would match a query

Parameters

NameTypeDescription
criteriaobjectQuery json

Returns

TypeDescription
promiseReturn promise

Examples

let count = await inctance.count({ status: "Running" });

findAndCount

get a list and the count of instances

Parameters

NameTypeDescription
bodyobjectJson of options.

Returns

TypeDescription
promiseReturn promise

Options

This options are optional

OptionDescription
criteriaSpecifies selection filter (default : {})
fieldsSelect specific fields (example: "createdAt name status")
limitNumber of instances returned (default : 100/ no limit : 0)
pagePage number depends on the limit (default : 0)
sortbySorts the results by key (default : createdAt)
directionAscending (1) or descending (-1) order (default : -1)

Examples

let body = {
criteria: {
status: "Running"
},
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let res = await inctance.findAndCount(body);
let instances = res.data;
let count = res.count;

aggregate

Aggregation operations process data records and return computed results

Parameters

NameTypeDescription
aggregationarrayaggregation array

Returns

TypeDescription
promiseReturn promise

Examples

let aggregation = [
{
"$match": { "status": "End" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
let inctances = await inctance.aggregate([aggregation]);

update

Update an instance

Parameters

NameTypeDescription
idstringid of instance.
dataobjectJson of a new data.

Returns

TypeDescription
promiseReturn promise

Examples

await inctance.update(id, { status : "End" });

delete

Delete an instance

Parameters

NameTypeDescription
idstringid of instance.

Returns

TypeDescription
promiseReturn promise

Examples

await inctance.delete(id);

history

Get instance history.

Parameters

NameTypeDescription
idstringid of instance.
dataobjectJson of data.

Returns

TypeDescription
promiseReturn promise

Examples

await inctance.history(id, { status : "End" });

10 - Task


The Task class has the methods that will allow you to manage the tasks

Usage

const task = new Task();

findById

Get a task by id

Parameters

NameTypeDescription
idstringid of task.

Returns

TypeDescription
promiseReturn promise

Examples

let oneTask = await task.findById(id);

find

list the tasks

Parameters

NameTypeDescription
criteriaobjectJson of query.

Returns

TypeDescription
promiseReturn promise

Examples

let tasks = await task.find({ instanceId: "instanceId" });

count

Allow to get the count of tasks that would match a query

Parameters

NameTypeDescription
criteriaobjectQuery json

Returns

TypeDescription
promiseReturn promise

Examples

let count = await task.count({ instanceId: "instanceId" });

findAndCount

get a list and the count of tasks

Parameters

NameTypeDescription
bodyobjectJson of options.

Returns

TypeDescription
promiseReturn promise

Options

This options are optional

OptionDescription
criteriaSpecifies selection filter (default : {})
assignedToConnectedTo get tasks of connected user (default : false)
fieldsSelect specific fields (example: "createdAt name status")
limitNumber of instances returned (default : 100/ no limit : 0)
pagePage number depends on the limit (default : 0)
sortbySorts the results by key (default : createdAt)
directionAscending (1) or descending (-1) order (default : -1)

Examples

let body = {
criteria: {
status: "Running"
},
assignedToConnected: true,
limit: 10,
page: 0,
sortBy: "createdAt",
direction: -1
}
let res = await task.findAndCount(body);
let tasks = res.data;
let count = res.count;

aggregate

Aggregation operations process data records and return computed results

Parameters

NameTypeDescription
aggregationarrayaggregation array

Returns

TypeDescription
promiseReturn promise

Examples

let aggregation = [
{
"$match": { "status": "End" }
},
{
"$project" : {
"_id": 1,
"name": 1
}
}
]
let tasks = await task.aggregate([aggregation]);

update

Update an task

Parameters

NameTypeDescription
idstringid of task.
dataobjectJson of a new data.

Returns

TypeDescription
promiseReturn promise

Examples

await task.update(id, { status : "End" });

delete

Delete an task

Parameters

NameTypeDescription
idstringid of task.

Returns

TypeDescription
promiseReturn promise

Examples

await task.delete(id);

getNextValue

Get next value of an task.

Parameters

NameTypeDescription
namestringname of the variable.
[padding]numberPadding of result with 000000.
modestringmode of the running user.

Returns

TypeDescription
promiseReturn promise

Examples

await task.getNextValue("name",5,"SF_mode");

history

Get the history of a task by its ID.

Parameters

NameTypeDescription
idstringTask ID
bodyobjectQuery parameters (optional)

Returns

TypeDescription
promiseReturns object { data, count }

Examples

let log = await task.history("taskId123", {});

11 - Api


The Api class has the methods that will allow you to manage your Apis.

Usage

const api = new Api();

invoke

Invoke an api.

Parameters

NameTypeDescription
bodyobjectJson of options.

Returns

TypeDescription
promiseReturn promise

Examples

let body = {
const myElement = document.getElementById("demo");

function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
myElement.innerHTML = "Geolocation is not supported by this browser.";
}
}

function showPosition(position) {
myElement.innerHTML = "Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
}
await api.invoke(body);

12 - Email


The Email class has the methods that will allow you to manage your emails.

Usage

const email = new Email();

send

Send an email.

Parameters

NameTypeDescription
assigneestringAssignee user email.
subjectstringSubject of the email.
variablesobjectJson of options.
mailTemplateobjectEmail template.
mailProviderobjectSoftyFlow default provider.
ccstringJson of options.
fromstringSender user email.
replyTostring*

Returns

TypeDescription
promiseReturn promise

Examples

await email.send("assignee","subject",{"var1", "var2"},{"mailTemplate"},{"mailProvider"},"mail of user in cc", "senderMail","replyTo");

13 - DataSource


The DataSource class provides generic data manipulation methods for various sources such as collections, tables, or reports.

Usage

const ds = new DataSource();

findOne

Retrieve a single document from a data source.

Parameters

NameTypeDescription
sourcestringName of the source
optionsobjectQuery options

Returns

TypeDescription
promiseReturns a single document

Examples

let doc = await ds.findOne("users", { filter: { email: "user@example.com" } });

list

List multiple documents from a data source.

Parameters

NameTypeDescription
sourcestringName of the source
optionsobjectQuery options

Returns

TypeDescription
promiseReturns an array of documents

Examples

let docs = await ds.list("users", { filter: { active: true } });

count

Count the number of documents in a data source.

Parameters

NameTypeDescription
sourcestringName of the source
optionsobjectQuery options

Returns

TypeDescription
promiseReturns the count of documents

Examples

let total = await ds.count("orders", { filter: { status: "delivered" } });

update

Update documents in a data source.

Parameters

NameTypeDescription
sourcestringName of the source
optionsobjectQuery conditions
dataobjectData to update

Returns

TypeDescription
promiseReturns update result

Examples

await ds.update("products", { filter: { stock: 0 } }, { restock: true });

insert

Insert a single document into a data source.

Parameters

NameTypeDescription
sourcestringName of the source
dataobjectDocument to insert
optionsobjectAdditional options

Returns

TypeDescription
promiseReturns insert result

Examples

await ds.insert("logs", { action: "login", userId: "abc123" });

insertMany

Insert multiple documents into a data source.

Parameters

NameTypeDescription
sourcestringName of the source
dataarrayArray of documents
optionsobjectAdditional options

Returns

TypeDescription
promiseReturns insert result

Examples

await ds.insertMany("logs", [{ action: "view" }, { action: "edit" }]);

delete

Delete documents from a data source.

Parameters

NameTypeDescription
sourcestringName of the source
optionsobjectDelete criteria

Returns

TypeDescription
promiseReturns delete result

Examples

await ds.delete("sessions", { filter: { expired: true } });

execute

Execute a custom action or command on a data source.

Parameters

NameTypeDescription
sourcestringName of the source
optionsobjectParameters for execution

Returns

TypeDescription
promiseReturns execution result

Examples

await ds.execute("jobs", { action: "resetAll" });

14 - File

The File class provides methods for generating PDF files from stored HTML templates and variable contexts using API endpoints.


generatePDF

Generates a PDF file by retrieving the HTML content of a file and posting it along with contextual data.

Parameters

NameTypeDescription
filenamestring- Desired name for the generated PDF
fidstring- File ID to fetch content from
contextobject- Contextual data for PDF rendering (e.g., variables)

Returns

TypeDescription
Promise- Resolves with the PDF generation response

Example

const file = new File();
file.generatePDF("output.pdf", "605c72...", { variables: { user: "Alice" } });

genratePDFWithVar

Generates PDF content using variables directly by posting to a specific content generation endpoint.

Parameters

NameTypeDescription
namestring- Name for the output (not directly used in the call)
fidstring- File ID of the template
contextobject- Variable data used for rendering the template

Returns

TypeDescription
Promise- Resolves with the server response

Example

const file = new File();
file.genratePDFWithVar("Invoice", "605c72...", { variables: { amount: 100, user: "Alice" } });