How to add Test Execution to a Test Plan with Xray Rest API?

I’m trying to add a Test Execution to a Test Plan using Xray Rest API & Axios. I have already created an API key and authenticated successfully like so:

const axios = require('axios');
const { argv } = require('yargs');

const { clientId, clientSecret } = argv;

const headers = {
  Accept: 'application/json',
  'Content-Type': 'application/json',
};

const authenticateXray = async () => {
  await axios({
    method: 'post',
    url: `https://xray.cloud.xpand-it.com/api/v2/authenticate`,
    headers,
    data: {
      client_id: clientId, // my created client id goes here
      client_secret: clientSecret, // my created client secret goes here
    },
  })
    .then(res => console.log(`Xray authentication response status was: ${res.status}`)) // 200!
    .catch(e => {
      throw new Error(e.response.data.error);
    });
};

Then, I made a call & passed some param values gathered before when creating a Test Plan & Test Execution like so:

await axios({
    method: 'posts',
    url: `https://xray.cloud.xpand-it.com/api/internal/testplan/${createdTestPlan.data.id}/addTestExecs`,
    data: {
      0: createdTestExecIssue.data.id,
    },
});

However, I get this error: (node:46352) UnhandledPromiseRejectionWarning: Error: Request failed with status code 400. I was able to link a Test Execution to the Test Plan using another endpoint from Jira Rest API, but I’m looking to add it instead, check the screenshot below for reference.

enter image description here

Answer

I was able to solve this issue by passing the data differently like so:

await axios({
    ...
    ...
    data: [`${testExecutionId}`],
});

& passing the X-acpt key/value pair in the Request Header like so:

'X-acpt': `encodedCharaterGoesHere-YouNeedToretrievUsingNetworkTabInChrome`,

My request ended up like so:

await axios({
    method: 'post',
    url: `https://xray.cloud.xpand-it.com/api/internal/testplan/${testPlanId}/addTestExecs`,
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
      'X-acpt': `encodedCharaterGoesHere-YouNeedToretrievUsingNetworkTabInChrome`,
      'X-Powered-By': 'Express',
    },
    data: [`${testExecutionId}`],
  });