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:

  1. 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.
  2. 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

Share this project: