ETA on GraphQL Support or Monday.com Integration

Hey there,

Is there an ETA on when GraphQL support will be coming to Parabola? Or a Monday.com integration?

Monday.com is about to deprecate their rest API next month, forcing everyone to move to their GraphQL API which Parabola doesn’t currently support.

Our business relies heavily on merging our project management (Monday.com), time tracking (Clockify) and resourcing data (ResourceGuru) using Parabola, but as of next month our reporting is going to break.

I’ve spent the entire day trying to find an alternative to Parabola, and although a couple of them support GraphQL and/or Monday.com, they’re terrible in comparison.

Any ideas?

Many thanks,

Karl

1 Like

Hey Karl,

First-class GraphQL support is on our radar, but unfortunately I don’t have an ETA for it quite yet.

In the meantime, the “Pull from API” step can GET from GraphQL services that return JSON as long as you encode the query into the request URL. In the case of Monday, you’ll use api.monday.com/v2?query= and append the GraphQL query, wrapped in { }.

As an example, with the public Artsy API:

Let me know if this works out for you, or if we can help structure specific queries. I know this is not exactly an ideal workflow. :pensive:

3 Likes

Hey Liam,

Thanks heaps for the reply, and apologies for the delay.

Just got a chance to test this out and it worked perfectly! I can now replace the Rest queries with the GraphQL queries and everything should keep humming along perfectly.

I’m super happy that I don’t have to switch away from Parabola! Thanks so much.

Perhaps worth adding this to your docs so that people know you do actually support GraphQL APIs.

Cheers,

Karl

2 Likes

Great point, Karl. I added Liam’s explanation to the docs!

2 Likes

@rosemary I’m having trouble passing values into these queries. I’m assuming it’s because the curly braces used to pass values is also a core component of the GraphQL query language.

Is there a trick to get Parabola to recognise where I want to pass in a value?

For example, below I’m trying to pass in values from a field called data.query.id:

Many thanks,

Karl

Hey Karl,

You may be right that GraphQL’s syntax won’t play nice with this step. I have a (sort of hare-brained) idea about how to get around this problem, but I need to vet it a little more to make sure it’ll work. I’ll get back to you tomorrow with the verdict—sorry for the delay!

2 Likes

Karl!

Good news, I’ve got what I believe to be a working query. You’re totally right that our API Enrichment step was trying to interpret the entire query as a column name. I’m going to file this as a bug so that we can support GraphQL queries better in the future.

In the meantime, we can trick the step by encoding all of the curly braces that don’t represent a column name. You may already know this, but for posterity: URLs can include “escape codes” that allow you to represent special characters without actually using those special characters. This is useful for just this sort of situation where those characters may be misinterpreted along the way.

In our case, we want to encode { and } as %7B and %7D respectively. That means that your final query should be:

https://api.monday.com/v2?query=%7Bquery:boards(ids: {data.query.id})%7Bitems%7Bid,name%7D%7D%7D

Let me know if this works out! I appreciate you being willing to stick with us, even if our support for GraphQL isn’t great yet. If nothing else, working on this problem with you is a useful learning opportunity for us there.

3 Likes

Liam, this worked perfectly - thank you! Clever workaround.

Using this trick I’ve been able to replace all of my Monday.com v1 REST API queries with v2 GraphQL queries.

Thanks heaps!

2 Likes

Where in this URL do I sub in my ID and search terms?

https://api.monday.com/v2?query=%7Bquery:boards(ids: {data.query.id})%7Bitems%7Bid,name%7D%7D%7D

When I try this url with the name hard written, it works, but if I try to use {Full Name} or %7BFull Name%7D instead of her name it doesn’t work. Can you help?

https://api.monday.com/v2?query=query %7B items_by_column_values (board_id: 498701639, column_id: “name”, column_value: “Catherine Mooney-Burton”) %7B id name column_values %7B id title value %7D%7D%7D

@Natany_Caxeta, can you give this a go?

https://api.monday.com/v2?query=%7Bquery:items_by_column_values(board_id: 498701639, column_id: “name”, column_value:"{Full Name}")%7Bid,name,column_values%7D%7D%7D

3 Likes

Hey @Karl_Graf, thanks for your help! I’m getting this error.

[{“message”:“Parse error on "\xE2" (error) at [1, 63]”,“locations”:[{“line”:1,“column”:63}]}]

Hey @Natany_Caxeta,

It looks like this is a syntax error. There may be an extra curly bracket closing your statement encoded as %7D.

https://api.monday.com/v2?query={query:items_by_column_values(board_id: 498701639, column_id: “name”, column_value:"{Full Name}"){id,name,column_values}}}

We can see if Karl has any additional suggestions, but try removing the last %7D to see if that produces different results in the meantime.

I tried that, but no change. @daniel

Hey @Natany_Caxeta,

Thanks for your patience while I chatted with our engineering team.

This appears to be an encoding problem stemming from an invalid character in the Full Name field. The API handles a very limited set of characters that can be UTF-8 encoded. Any special characters that are inserted via column values are seen as invalid by the API.

I believe the character in question is â , which is encoded as \xE2. To get around this, try using a “Find and replace” step to find all values of â and replace it with a standard character.

Let me know if that checks out.

Hey, I tried this, but no change.

Hey @Natany_Caxeta

Did you receive the same error?

At this point, it may be easiest to see what data you’re passing through the input. Send us an email at help@parabola.io and we can take a look at this.

Thanks, I reached out to support.

How would you configure this to 1. Update an item’s column value 2. Create a new item on a board?

Any suggestions? . …

Hi @Natany_Caxeta,

We sent a reply, but I’ll include some additional information here as well.

The errors you received are mainly syntax-based. The word “name” wrapped in slanted quotes, not normal quotes. Copying quotes from websites occasionally results in them being slanted. There was also an additional curly bracket at the end of your request body.

To update an item’s column value, they provide the example below:

mutation {
	change_column_value(board_id: 20178755, item_id: 200819371, column_id: "status", value: "{\"index\": 1}") {id}
}

Manually encode your opening and closing brackets to ensure your syntax is correct. You may leave dynamic cell values wrapped in {curly brackets}

Try using a similar approach to create a new item on a board. Here is the example they provided:

mutation {
create_item (board_id: 20178755, group_id: "today", item_name: "new item") {id}
}