Give your SaaS the Power of Connectivity
Your customers ask for integrations.
With embedded integration capabilities, you have the freedom to create an interconnected network of apps around your SaaS with less development efforts
Build your own SaaS ecosystem
Your customers ask for integrations.
With embedded integration capabilities, you have the freedom to create an interconnected network of apps around your SaaS with less development efforts
Power up your SaaS with embedded integration
FULLY CUSTOMIZABLE
Our backbone, your brand, your looks: UI, support, docs, and more
CLOUD-NATIVE
Ensure the continuous exchange of data with no risk of downtime
ADAPTABLE TO YOUR NEEDS
Full freedom to create your own connectors for third-party apps
WHITE-LABEL OR EMBED
Integrations, flows and users can be created directly via iPaaS API
FULL SUPPORT AND SLA
2nd level support and enterprise-grade SLA are included by default
sdk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const request = require ('request-promise');
/**
* This method will be called from elastic.io with following parameteers
*
* @param msg incoming message object that contains ``body`` with payload
* @param cfg configuration that is account information and configuration field values
*/
async function process (msg, cfg) {
console.log ('You stdout will be safe with us');
const user = await request.get (`https://api.github.com/users/${msg.body.user}?length=${cfg.pageSize}`);
const repos = await request.get (user.repos_url);
console.log (`Fetched ${repos.length} repos`);
return { repos };
}
module.exports.process = process;
public class CreateCustomerAction implements Module {
private static final Logger logger = LoggerFactory.getLogger(CreateCustomerAction
.class) ;
@Override
public final void execute (ExecutionParameters parameters) {
// This is an incoming message
final Message message = parameters.getMessage() ;
logger.info("Received message {}", message) ;
// This is outgoing result
final JsonObject body = Json.createObjectBuilder()
.add("message", "hello world")
.build() ;
final Message data = new Message.Builder().body(body).build() ;
// Sending it to the next integration step
parameters.getEventEmitter().emitData(data) ;
}
}
Coming soon.
integration management api
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
curl https://api.elastic.io/v2/flows \
-u {EMAIL}:{APIKEY} \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' -d '
{
"data": {
"type": "flow",
"attributes": {
"name": "Timer to E-Mail",
"type": "ordinary",
"graph": {
"nodes": [
{
"id": "step_1",
"command": "elasticio/timer:timer",
"fields": {
"interval": "minute"
}
},
{
"id": "step_2",
"command": "elasticio/email:send"
}
],
"edges": [
{
"source": "step_1",
"target": "step_2",
"config": {
"mapper": {
"to": "[email protected]",
"subject": "Test",
"textBody": "{{fireTime}}"
}
}
}
]
}
}
}
}'
curl https://api.elastic.io/v2/users \
-X POST \
-u {EMAIL}:{APIKEY} \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' -d '
{
"data": {
"type": "user",
"attributes": {
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"password": "secret",
"company": "Doe & Partners"
},
"relationships": {
"organizations": {
"data": [
{"id": "54f4be3fe7d5224f91000001"}
]
}
}
}
}'
curl https://api.elastic.io/v2/flows/{FLOW_ID}/start \
-X POST \
-u {EMAIL}:{APIKEY} \
-H 'Accept: application/json' \
-H 'Content-Type: application/json'
-
FULLY CUSTOMIZABLE
Our backbone, your brand, your looks: UI, support, docs, and more
-
CLOUD-NATIVE
Ensure the continuous exchange of data with no risk of downtime
-
ADAPTABLE TO YOUR NEEDS
Full freedom to create your own connectors for third-party apps
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23const request = require ('request-promise'); /** * This method will be called from elastic.io with following parameteers * * @param msg incoming message object that contains ``body`` with payload * @param cfg configuration that is account information and configuration field values */ async function process (msg, cfg) { console.log ('You stdout will be safe with us'); const user = await request.get (`https://api.github.com/users/${msg.body.user}?length=${cfg.pageSize}`); const repos = await request.get (user.repos_url); console.log (`Fetched ${repos.length} repos`); return { repos }; } module.exports.process = process;
public class CreateCustomerAction implements Module { private static final Logger logger = LoggerFactory.getLogger(CreateCustomerAction .class) ; @Override public final void execute (ExecutionParameters parameters) { // This is an incoming message final Message message = parameters.getMessage() ; logger.info("Received message {}", message) ; // This is outgoing result final JsonObject body = Json.createObjectBuilder() .add("message", "hello world") .build() ; final Message data = new Message.Builder().body(body).build() ; // Sending it to the next integration step parameters.getEventEmitter().emitData(data) ; } }
Coming soon.
-
WHITE-LABEL OR EMBED
Integrations, flows and users can be created directly via iPaaS API
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
41curl https://api.elastic.io/v2/flows \ -u {EMAIL}:{APIKEY} \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' -d ' { "data": { "type": "flow", "attributes": { "name": "Timer to E-Mail", "type": "ordinary", "graph": { "nodes": [ { "id": "step_1", "command": "elasticio/timer:timer", "fields": { "interval": "minute" } }, { "id": "step_2", "command": "elasticio/email:send" } ], "edges": [ { "source": "step_1", "target": "step_2", "config": { "mapper": { "to": "[email protected]", "subject": "Test", "textBody": "{{fireTime}}" } } } ] } } } }'
curl https://api.elastic.io/v2/users \ -X POST \ -u {EMAIL}:{APIKEY} \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' -d ' { "data": { "type": "user", "attributes": { "first_name": "John", "last_name": "Doe", "email": "[email protected]", "password": "secret", "company": "Doe & Partners" }, "relationships": { "organizations": { "data": [ {"id": "54f4be3fe7d5224f91000001"} ] } } } }'
curl https://api.elastic.io/v2/flows/{FLOW_ID}/start \ -X POST \ -u {EMAIL}:{APIKEY} \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
-
FULL SUPPORT AND SLA
2nd level support and enterprise-grade SLA are included by default
Should you focus on retaining existing customers with integrations they request for or rather on attracting new customers with new functionalities and features?
With a low-code, easy-to-use and powerful integration platform embedded in your application, you can do both.
Should you focus on retaining existing customers with integrations they request for or rather on attracting new customers with new functionalities and features?
With a low-code, easy-to-use and powerful integration platform embedded in your application, you can do both.
REDUCE CUSTOMER CHURN
Providing a stellar API is like equipping your customers with first-grade tools and wood to build their own furniture. Why not give them easy IKEA instead?
KEEP YOUR COSTS AT BAY
Your customers are precious, but so are your development resources. Reduce your overhead with an out-of-the-box integration infrastructure.
INCREASE PRODUCT ADOPTION
Think ahead of your customers. Know how they use your product and build new features and services to better tailor it to their business needs.
For SaaS providers, owning the integration infrastructure is a matter of competitive advantage – not just an offer of completeness.
Massimo Pezzini
Vice President and Research Fellow at Gartner