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'}}}

Best Answer

  • zoya faberov
    Answer ✓

    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.

Answers

  • 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.


  • 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

  • Hi @EA_MZ ,

    Try

    import requests

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

    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

  • 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

  • @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__)
  • they omit the 'Content-Type': 'multipart/form-data' parameter in the openpermid module


    1627378176971.png