π 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
Section titled TermsTerms 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 |
Developer Mode
Section titled Developer ModeTo 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.
Projects Page
Section titled Projects PageA developer may have multiple applications. The Projects page helps distinguish between these applications and organize each automation.
Settings Tab
Section titled Settings TabWhen 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.
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.
Automation Tab
Section titled Automation TabThis 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.
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.
Statistics Tab
Section titled Statistics TabLeft 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.
End User's Connection
Section titled End User's ConnectionDeveloper 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.
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.
Types
Section titled Types 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;
};
Error Codes
Section titled Error CodesIf 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. |
Endpoints
Section titled EndpointsGet 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.