Skip to content

πŸ”Œ Integration Provider

The Integration Provider feature in Monkedo is designed specifically for software developers. It empowers them to enhance their software's integration capabilities with other applications, making it easier to create seamless and efficient workflows across multiple platforms.

Who Benefits from Integration Provider?

This feature is ideal for software developers who are looking to extend the functionality of their applications by integrating them with other tools and services. Whether you're building a new application or improving an existing one, Integration Provider gives you the tools you need to create robust, interconnected systems.

What Are the Benefits?

  • Time-Saving: With Monkedo, developers can reduce the amount of time spent on coding complex integrations. The no-code environment allows for faster development and deployment, letting you focus on innovation rather than repetitive coding tasks.

  • Scalable Infrastructure: Monkedo offers a scalable infrastructure with various plans that cater to different needs. Each plan comes with different credit limits, allowing developers to choose the one that best fits their project's requirements. As your needs grow, you can easily scale up, ensuring that your integration capabilities grow with your business.

This section generally explains how the structure works and what should be used in the interface. For code details, please refer to the API section.

Terms and definitions used throughout the document.

Term

Description

Monkedo

We | Our Application

Developer

The user who will run automations via API from their own application

End User

The user utilizing the developer's application

To use this structure, Developer Mode must be enabled. Visit the Profile page to enable it.

Once this mode is enabled, a Projects page will be added to the Home Page menu.

A developer may have multiple applications. The Projects page helps distinguish between these applications and organize each automation.

projects
All Projects

When creating a project, you need to provide a mandatory name and a webhook URL. As shown in the image above, each project is displayed as a card featuring its logo, name, and creation date.

settings
Settings Tab for Developers

In the API Tokens section, you can create tokens necessary for automation and other requests within this project.

In the Integrations section, register each application used in the project's automations. For OAuth applications, an additional form will be displayed, while other applications can be added directly.

The Danger Zone section includes the option to delete the project. Deleting the project will also remove all associated integrations, automations, tokens, external users, and connection records.

This tab is essentially a replica of the Automations page but with some differences. It displays the project title and tabs, and the Run button is hidden since these automations cannot be triggered manually. Additionally, clicking the Publish button does not automatically subscribe the automation to triggers.

automation-page-developer
Automation Page for Developers

The developer can run the automation in the editor interface for testing purposes. However, for the automation to run in the background, it must be triggered by the end user. For manually triggered automations, the user must initiate the request, and for automations with other types of triggers, the corresponding request must be made.

Left Section: Three statistics are displayed on the left side:

  • Users: Shows the number of End User records registered to the project.

  • Registrations: Indicates whether any application triggers have been subscribed to from the project's automations and displays the number of subscribed triggers.

  • Used Daily Credits: Displays the number of credits used that day for the project's automations.

Right Section: A table showing the last 5 execution records.

Connected Users: You can export the information of users who have connected their accounts to OAuth-using components in the automations as a CSV file.

developer-statistics
Statistics for developers

Developer Account Testing: When a developer tests a component in the editor, they connect their own account. However, when running the automation, the end user may need to connect their own account. This is indicated by a button in the interface.

Option to Replace End User's Connection: The Replace end user's connection option, as shown in the image, determines whether the connection added by the developer can be used by the end user.

end-user-connection
End user's connection switch

Default Setting: This option is selected by default, meaning the end user needs to have a valid connection to run the component.

Example Scenarios:

Option Active: In an automation for creating tasks in Cubicl, the task creator is the person who runs the component. Thus, the task owner changes based on who runs the component.

Option Inactive: In an automation for sending messages via Twilio, a common phone number is used for sending messages. This means the phone number does not change based on the user. Therefore, regardless of who runs the component, it always uses the developer's account.

This section provides a comprehensive overview of the routes, types, and error codes for the features in the system, ensuring developers understand how to interact with the API and handle potent.

 type CredentialInfo = {
    appName: string;
    fields: CredentialInfoField[];
    desc: string;
};

type CredentialInfoField = {
    name: string;
    /**
     * The type of the field. Can be one of the following:
     *
     * 1. HTML input types: text, password, number etc.
     * (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input)
     * (except 'checkbox' and 'boolean')
     * 2. 'select' for a selectbox (options must be specified).
     * 3. 'textarea' for fields that can have multiple lines of text.
     *
     * If not specified, defaults to 'text'
     */
    type?: string;
    desc?: string;
    label?: string;
    isOptional?: boolean;
    /**
     * If type is 'select', this is the list of options
     */
    options?: { value: string; label: string }[];
    /**
     * If field should be shown only when a certain condition is met, specify it here.
     */
    showWhen?: {
    	key: string;
    	value: string | number | boolean;
    };
    /**
     * If field is not dependent on another field and will be displayed after a certain event occurs
     */
    show?: boolean;
};

If the request is successful, it returns a 200 status code or other HTTP status codes starting with 2. In case of an error, in addition to standard HTTP status codes, custom error codes will be returned.

Code

Name

Description

1

INVALID PARAMETER

The request parameters were not sent as expected.

201

AUTOMATION NOT DEPLOYED

The published version of the automation to be executed was not found.

204

AUTOMATION NOT FOUND

No automation found for the submitted data.

209

CONNECTION NOT FOUND

No connection record found for the user.

210

INVALID NODE TYPE

The automation cannot be manually executed.

211

TRIGGER NOT FOUND

A request for manual execution of the automation was made, but no manual trigger was found in the automation.

216

MISSING PROJECT INTEGRATION

Integration records of some applications used in automation have not been added.

217

IPAAS END USER NOT CONNECTED

No connection found for the user for some components used in the automation.

600

INTEGRATION NOT FOUND

No application record found in the project's settings page.

900

INVALID TOKEN

The token used in the request is invalid or not related to the project.

1000

IPAAS USER NOT FOUND

No record found for the user.

Get Connection Information for Non-OAuth Applications

GET api/v1/ipaas/apps/:appKey/credential-info

Path Parameters

Name

Type

Description

appKey*

String

200: OK
CredentialInfo

Check Application Connections

GET api/v1/ipaas/users/:userId/connections/status

Path Parameters

Name

Type

Description

userId*

String

Query Parameters

Name

Type

Description

appKeys*

String

If there is more than 1 value, separate them with commas.

200: OK
Record<string, 'connected' | 'not-connected' | 'invalid'>

/**
 * Example;
 * { "google-calendar": "connected", "cubicl": "not-connected" }
 */

Get User’s Application Connection

GET api/v1/ipaas/users/:userId/connections/:appKey

Path Parameters

Name

Value

Description

userId*

String

appKey*

String

Response

200: OK
ConnectionDetails

Import User Token

POST api/v1/ipaas/users/connections/import

Body

Name

Type

Description

userId*

String

appKey*

String

scopes*

String[]

Can be empty array

accessToken*

String

refreshToken

String

If your token cannot be renewed, do not send it

expiresAt

Number (miliseconds)

If your token is perpetual, do not send it.

oauth1Token

String

Should be sent if the application uses the OAuth1 structure

accessTokenSecret

String

Should be sent if the application uses the OAuth1 structure

200: OK
// No content

Connect Application

POST api/v1/ipaas/users/:userId/connections/:appKey

Path Parameters

Name

Type

Description

userId*

String

appKey*

String

Body

Name

Type

Description

connectionFields

Record<string, any>

It should be sent if the app type is not "oauth".

200: OK
string | null
// If it is an OAuth application, a connection link is returned.
// For other applications, no response is returned.

Run Manual Automation

POST api/v1/ipaas/automations/:automationId/run

Path Parameters

Name

Type

Description

automationId*

String

Body

Name

Type

Description

userId*

String

data*

Record<string, any>

development

String

"true" or empty

200: OK
{
    status: 'completed' | 'paused' | 'error' | 'canceled';
    message?: string;
    result?: any
}

Register to Automation Trigger

POST api/v1/ipaas/automations/:automationId/register

Path Parameters

Name

Type

Description

automationId*

String

Body

Name

Type

Description

userId*

String

data*

Record<string, any>

200: OK
 

Unregister from Automation Trigger

POST api/v1/ipaas/automations/:automationId/unregister

Path Parameters

Name

Type

Description

automationId*

String

Body

Name

Type

Description

userId*

String

200: OK
 

Delete Connection

DELETE api/v1/ipaas/users/:userId/connections/:appKey

Path Parameters

Name

Type

Description

userId*

String

appKey*

String

200: OK
 
400: Bad Request Invalid User Id
"params" must contain "userId" value.
404: Not Found User Not Found
 
404: Not Found Integration Not Found
 

Deleting a Connection vs. Unregistering from a Trigger

The connection deletion route only removes the connection that the user added for the component. If this connection is part of a trigger, the trigger records are not deleted.

To terminate the trigger subscriptions after deleting the connection, you must also make an "unregister" request. If this request is not made, the triggers will continue to listen for data, and the automations will keep running for that user.