Hey @jmeehan – welcome to the community!
I built a little Python program last week and used this function to create a new item. Looks like I’m also passing the data as a dict, and works fine:
def add_to_board(name, status="", high_tag="", low_tag="", link=""):
headers = {"Authorization" : monday_key}
monday_url = 'https://api.monday.com/v2'
# store column data in a dict
column_data = {"link" : {"url" : link, "text" : "ZD Link"}, "status1" : status, "high_level9" : high_tag, "low_level3" : low_tag}
# store request body in a dict, including variables
req_data = {"query" : "mutation($name: String!, $columns: JSON!)\\
{create_item(item_name:$name, board_id:XXXX, column_values:$columns) \\
{name id column_values {id value}}\\
}",
# send columns as a variable to prevent string manipulation
"variables" : {"name" : name, "columns" : json.dumps(column_data)}}
r = requests.post(url=monday_url, json=req_data, headers=headers)
if r.status_code != 200:
print('Status:', response.status_code)
raise Exception("Add to board failed.")
Let me know if that helps! I’ll post the rest of my code as a little example and tutorial later this week 🙂
Thanks for the quick reply!
I have also tried the query without the outer brackets:
json={'query' : 'account{id}'}
And received the same result… I’ve also tried a few other variations including:
json={'query':'query{account{id}}'}
Unfortunately, I keep receiving the same error message.
Hey @jmeehan – thanks for the context.
I opened up a Python interpreter and did exactly what you’re doing, and received the data:
I did try without the outer braces and that didn’t work. You do need to include the outer braces.
However, I think there’s something else going on here – a “no query string was present” error means the server thinks the body of your request is empty. If there was a syntax error, you’d receive a ParseError like this:
Are you using any middleware that might change the request before it is sent to our server? What version of Python or requests are you using?
Well, this is interesting - If I make the request in the terminal just as you did, the query is successful and I get the account information back.
However, when I run the same exact code in my script, I get an error message. There must be something else going on that I need to troubleshoot.
Python==3.7.3
requests==2.22.0
Oh interesting! Looks like there might be something else happening here. Do let us know what the solve here is, and if you need anything else ☀️
Well, I’ve got things working now - embarrassingly, the URL I was using was: http://api.monday.com/v2
, when it should have been https://api.monday.com/v2
Thanks for your help!
😬
Hey John! No worries, it happens 😀 Glad to know I’m not the only one who takes https:// for granted! 🥉