question

steven.hagene avatar image
1 1 1 1

Trying to use permid file match and receive error Failed to resolve API Key variable request.header.X-AG-Access-Token

Good day

I am trying to use permID file match by hitting https://api.thomsonreuters.com/permid/match/file

I can use the entity search API with no errors, but with the file match I am getting the following error
{ "fault": { "faultstring": "Failed to resolve API Key variable request.header.X-AG-Access-Token", "detail": { "errorcode": "steps.oauth.v2.FailedToResolveAPIKey" } } }

I am currently using postman to test and am unsure of what I am doing wrong.


When using this access token in the Dev Tools try it out section, I do not receive an error.

Any help is appreciated.

Steven

apierrorintelligent-tagging-apipermid-apiopen-permid-api
10 |1500

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

Jirapongse avatar image
45.2k 103 43 60

I have modified the code.

1. The path should start with "/"

2. Add the "x-ag-access-token" in the headers

3. Add content in the body

The modified code is:

var http = require("https"); 

var options = { "method": "POST", "hostname": "api.thomsonreuters.com", "path": "/permid/match/file", "headers": { "content-type": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "x-openmatch-numberOfMatchesPerRecord": "1", "x-openmatch-dataType": "Organization", "cache-control": "no-cache", "Postman-Token": "101e3dbe-96bf-4b1c-9fce-8dad5f4ff975", "x-ag-access-token" : "token"}}; 

var req = http.request(options, function (res) { var chunks = []; res.on("data", function (chunk) { chunks.push(chunk); }); 

res.on("end", function () { var body = Buffer.concat(chunks); console.log(body.toString()); }); }); 

req.write("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"test.csv\"\r\nContent-Type: application/vnd.ms.-excel\r\n\r\nLocalID,Standard Identifier,Name,Country,Street,City,PostalCode,State,Website\r\n1,,Apple,US,\"Apple Campus, 1 Infinite Loop\",Cupertino,95014,California,\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--");
 
req.end(); 
10 |1500

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

Alex Putkov.1 avatar image
39.3k 76 11 27

According to chapter 2.3 of PermID API User Guide, if you want to pass access token as a parameter in the URL rather than as an HTTP header, the parameter name is "access-token" and not "x-ag-access-token".

10 |1500

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

steven.hagene avatar image
1 1 1 1

After updating my node code i get the following back in terminal after trying to run node.
$ node index.js <!DOCTYPE html> <html> <head> <title>Error</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>An error occurred.</h1> <p>Sorry, the page you are looking for is currently unavailable.<br/> Please try again later.</p> </body> </html>

Below is the code in index.js

const express = require('express')
const app = express()


const request = require('request');
const cors = require('cors');
// const http = require('http');
// const https = require('https');
const util = require('util')


// Sets an initial port. We"ll use this later in our listener
const PORT = process.env.PORT || 8080;


app.use(cors());

var corsOptions = {
  origin: '*',
  optionsSuccessStatus: 200
};

// Service end-point (search) 

// app.get('/upload', function (req, res) {

//   var options = {
//     method: 'GET',
//     url: 'https://api.thomsonreuters.com/permid/match/file?Content-Type=multipart%2Fform-data',
//     headers: {
//       'cache-control': 'no-cache',
//       'x-openmatch-dataType': 'Organization',
//       'x-openmatch-numberOfMatchesPerRecord': '1',
//       'x-ag-access-token': '96CT8NAgnieeuiYA2YPeNMnbPMfHu4W8'
//     },
//     formData: {
//       file: undefined
//     }
//   };

//   request(options, function (error, response, body) {
//     if (error) throw new Error(error);
//     console.log(response)
//     console.log(body);
//   });

// });

// function dataReturned(e) {
//   console.log("Success!");
//   finalRes.end(e);
// }

// const server = http.createServer(app)
// server.listen(PORT, () => {
//   console.log(`app started! at port ${PORT}`);
// });
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.thomsonreuters.com",
  "path": "permid/match/file",
  "headers": {
    "content-type": "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW",
    "x-openmatch-numberOfMatchesPerRecord": "1",
    "x-openmatch-dataType": "Organization",
    "cache-control": "no-cache",
    "Postman-Token": "101e3dbe-96bf-4b1c-9fce-8dad5f4ff975"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write("------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--");
req.end();

10 |1500

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

Alex Putkov.1 avatar image
39.3k 76 11 27

To troubleshoot this I suggest you capture the HTTP request and response going on the wire. Use an HTTP analyzer or a network sniffer.

10 |1500

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