Skip to main content

Hi,


Trying unsuccessfully to upload a file to an existing column following the API docs, but I receive a Bad Request error without too much information regarding what is bad.


I’m working with Python, first I generate a request data:



req_data = “”“mutation{

add_file_to_column(item_id: %s, column_id: “%s”, $file: “%s”) {

id

}

}”“” % (item_id, column_id, self.to_base_64(fpath))



The file path is opened and then converted to a base64 string, this is the final request:



mutation {

add_file_to_column(

item_id: 724825528

column_id: “Files”

$file: “LHByb2plY3RfbmFtZSxncm91cAowLGJhdHJ1LAoxLGJpc2Vhc2ssCjIsY2JjZGFpcnlpbCwKMyxjY2JvdHRsZXJzdXMsCjQsY2Nici1wcm9kLAo1LGNjbGliZXJ0eXVzLAo2LGNjdHJhZG14LAo3LGRpYWdlb2FyLAo4LGRpYWdlb2JlbmVsdXgsCjksZGlhZ2VvaW4sCjEwLGRpYWdlb2l0LAoxMSxkaWFnZW9rZSwKMTIsZGlhZ2VvbXgsCjEzLGRpYWdlb25nLAoxNCxkaWFnZW9ub3JkaWNzLAoxNSxkaWFnZW9ydSwKMTYsZ3NrbnosCjE3LGluYmV2Y2ksCjE4LGluYmV2bmwsCjE5LGluYmV2dHJhZG14LAoyMCxtb25kZWxlemRtaXVzLAoyMSxuZXN0bGVpbCwKMjIscG5nanAsCjIzLHJpbmllbHNlbnVzLGdyb3VwX2EKMjQscmluaWVsc2VudXMsZ3JvdXBfYgoyNSxyaW5pZWxzZW51cyxncm91cF9jCjI2LHJpbmllbHNlbnVzLGdyb3VwX2QKMjcscmluaWVsc2VudXMsZ3JvdXBfZQoyOCxyd2ZhaXJwcnNnLGdyb3VwX2EKMjksc2Fub2ZpY2ksCjMwLHNhbm9maWNtLAozMSxzYW5vZmlqcCwKMzIsc2Fub2ZpbnosCjMzLHNhbm9maXNuLAozNCxzYW5vZml0ciwKMzUsc2h1ZmVyc2FsaWwsCg==”

) {

id

}

}



I am sending it as a POST to the /v2/file API, I can add items and do other manipulations, it’s just that this query keep failing with Bad Request.

I tried omitting the $ in $file, tried escaping it, nothing worked.


Thanks.

Hey @aviadm - welcome!


Right now you wouldn’t be able to upload the file this way - it would need to be sent over as a multipart file. We’re working on having more documentation on this, but in the meanwhile I would recommend following this guide from our community.


Let me know if we can help with anything else.


-Daniel


Any update to this? I tried reading the community guide but I am still having trouble getting it to work and formatting it correctly with Python.


Hello @Knowa,


We recently pushed out a new release of moncli that includes uploading files to a column or update.


The readme contains documentation regarding this, but the below code example may help get things started:


>>> from moncli import MondayClient
>>>
>>> client = MondayClient('username', '', 'api_v2_key')
>>> board = client.get_board(id='board_id')
>>> item = [item for item in board.get_items() if item.id == 'item_id'][0] # Keyword arguments to be supported soon.
>>> file_column = item.get_column_value(id='column_id')
>>> file_asset = item.add_file(file_column, 'upload_file_path')

Best of luck, and please let me know if you have any questions.


All the best!


Interesting, I will check this out. I tried using moncli a couple months ago but had an issue with a complexity error when querying groups. I’ll let you know if I have any issues.


Hey @Knowa - at this time the multipart upload I listed above would still be the main way to upload files to the API (you can use something like Postman for this).


I haven’t personally tried the new release of moncli above, but I’d be curious to hear your results 🙂


-Daniel


When using what you posted, when I use board.get_items(), I get a TypeError for an unexpected keyword argument ‘ids’. This is also true for other variations of ‘ids’.


client = MondayClient(user_name='EMAIL', api_key_v1='', api_key_v2='APIV2KEY')

board = client.get_board(id='123456789')

item = board.get_items(ids=e790942328])

File "c:\\Python38\\Scripts\\Projects\\mondayTest.py", line 10, in <module>
item = board.get_items(ids=e790942328])
TypeError: get_items() got an unexpected keyword argument 'ids'

Hello @Knowa,


I must apologize. The current release does not support keyword arguments for get_items() ☹. You can work around this with list comprehension.


item = [item for item in board.get_items() if item.id == '790942328'][0]

I have been side-tracked by other work-related projects and am actually looking into the complexity issue that you submitted earlier. I will add the keyword argument support for this in the meantime.


I know that our current dev codebase (for the official release) does support keyword arguments for these types of query methods. I will be working on getting this released within the next week or two.


Thank you for your patience, and please let me know if this works out for you!