question

Upvotes
Accepted
3 1 2 6

Matching File Input Request Example

I am trying to build a matching request using csv file using python request library. I am getting <Response [500]> What I am doing wrong here?


My example csv input file contains just one column with the header name and 1 row, like this:

name

Facebook


There is my code:


request_url = "https://api-eit.refinitiv.com/permid/match/file"

headers = { 'Content-Type': 'multipart/form-data',

'x-ag-access-token': my_apikey,

'x-openmatch-numberOfMatchesPerRecord': '1',

'x-openmatch-dataType': 'Organization'}


files = {'file': open('C:/My_Folder/input_file.csv') }

response = requests.post(url=request_url, headers=headers, files=files)

r = response.json()

print(r)

----------

<Response [500]>

{'error': {'status': {'code': '500',

'errorCode': 'Server Error',

'errorDescription': 'java.lang.NullPointerException'}}}

intelligent-tagging-apipermid-apiopen-permid-api
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvote
Accepted
28.4k 30 11 15

Hello @EA_MZ ,

In Python, by specifying "files" as parameter, the request is already 'Content-Type': 'multipart/form-data':

This discussion thread may be helpful.

It seems, that if you have it twice, Requests module gets it slightly off, resulting in the invalid submission.

It is mandatory.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
28.4k 30 11 15

Hello @EA_MZ ,

Please see Record Matching API Swagger documentation. You can test with your file, to see if it is formatted correctly.

Via link "templates can be found here" you can download the required format templates, per record type of search, and test with this file. Next you can follow the same format for your entries file, that will ensure the valid format of the submitted file.


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hi Zoya, I tested my file through the website and it works without problems, however it doesn't work when submitted through api using python requests.


It is a very basic input, just one row with a header 'Name'.

1627338932804.png


1627339043843.png

1627338932804.png (3.1 KiB)
1627339043843.png (25.0 KiB)
Upvotes
28.4k 30 11 15

Hi @EA_MZ ,

Try

import requests

request_url = "https://api-eit.refinitiv.com/permid/match/file"

headers = { #'Content-Type': 'multipart/form-data',

'x-ag-access-token': 'YOURTOKEN',

'x-openmatch-numberOfMatchesPerRecord': '1',

'x-openmatch-dataType': 'Organization'}


files = {'file': open('.\exampleRM.csv') }

response = requests.post(request_url, files=files, headers=headers)

r = response.json()

print('Response:')
print(r)

works on my side

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Thanks Zoya! Disabling the 'Content-Type': 'multipart/form-data' in the header solved the issue! Do you know what is the cause of this issue?

The 'Content-Type': 'multipart/form-data' parameter is presented in the manual as mandatory, so it was confusing.



1627347920802.pngImage Caption

1627347920802.png (124.8 KiB)
Upvotes
45.3k 103 44 60

@EA_MZ

You can refer to the OpenPermID Python library.

1627360551087.png

The source code is available on GitHub.

               files = {'file': open(filename)}
                response = requests.post(
                    url,
                    headers=headers,
                    files = files,
                    timeout=self.__timeout__)

1627360551087.png (35.4 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

they omit the 'Content-Type': 'multipart/form-data' parameter in the openpermid module


1627378176971.png

1627378176971.png (65.7 KiB)