Inspiration
A 'hackathon-like' approach to solving the following:
What it does
cURLy is an Integration composed of recipes that will send an HTTP request when a column value is changed or an item is added to a group in a table view. The integration will update column(s) based off values in the HTTP response.
The user can customize the HTTP request by entering a cURL command in the recipe. The cURL command can have references to the values in different column or the item name.
The user also specifies a JSONPath expression or mapping in the recipe.
If the user only wishes to update one column the integration can search the HTTP response for a certain path and then update the specified column with the value found in the JSON.
The user can also update multiple columns if a mapping is specified. For each column reference in the mapping, the integration will search the HTTP response and update the column with the value found.
A reference to a column is given by the ${} The reference to the item name is given by ${itemName}
How I built it
This integration was built using express.js and various npm modules like 'jsonpath' and 'node-libcurl'. Tested locally using ngrok, deployed to serverless for scalability.
Challenges I ran into
Learning how triggers and actions work in Monday Integrations was a bit awkward but once I had about 6-7 hours of playing around with it I thought it was great.
I think the developer documentation was sufficient but a few things were left out:
- Formulas are not supported in custom built integrations. I found this out only by experimenting. It would be good to have more specific documentation on formulas.
- It's unclear how many times an integration will be retried if the response from an integration is anything other than a '200 OK'. I wasn't sure whether to return anything other than a '200 OK'. It appeared to me that an Integration was continually retried until a success status code was returned.
I had some challenges with AWS lambda. I was running node 12. Node 12 is only available on Amazon Linux 2 and Amazon Linux 2 does not support the CURL binary. I had to create a custom AWS layer in order to get around this.
Accomplishments that I'm proud of
I haven't developed in Node.js for a few years so it was cool getting back into it and seeing the improvements done in ES6.
What I learned
How to use the Monday API. Triggers/Actions Integrations.
What's next for cURLy
-More bug testing and user beta -Support xPath for web services that only return XML -Support additional HTTP methods (PUT,PATCH,DELETE) -A CI/CD process to deploy changes
Built With
- amazon-web-services
- express.js
- node.js
- serverless

Log in or sign up for Devpost to join the conversation.