Home > Software engineering >  Jira error when creating issue in node.js
Jira error when creating issue in node.js

Time:09-14

The following code gives me the error "Invalid request payload. Refer to the REST API documentation and try again" when is executed and I dont know where the error is

const bodyData = 
    `"fields": {
        "summary": "Summit 2019 is awesome!",
        "issuetype": {
            "name": "Task"
        },
        "project": {
            "key": "PRB"
        },
        "description": {
            "type": "doc",
            "version": 1,
            "content": [
                {
                "type": "paragraph",
                "content": [
                    {
                    "text": "This is the description.",
                    "type": "text"
                    }
                ]
                }
            ]
        }
    }`;

fetch('https://mysite.atlassian.net/rest/api/3/issue', {
    method: 'POST',
    headers: {
        'Authorization': `Basic ${Buffer.from('[email protected]:mytoken').toString('base64')}`,
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: bodyData
}).then(response => {
        console.log(
            `Response: ${response.status} ${response.statusText}`
        );
        return response.text();
    }).then(text => console.log(text)).catch(err => console.error(err));

CodePudding user response:

Problem

Your bodyData is not a valid json

Solution

Wrap it with {}

  `{
    fields: {
      "summary": "Summit 2019 is awesome!",
      "issuetype": {
        "name": "Task"
      },
      "project": {
        "key": "LOD"
      },
      "description": {
        "type": "doc",
        "version": 1,
        "content": [
          {
            "type": "paragraph",
            "content": [
              {
                "text": "This is the description.",
                "type": "text"
              }
            ]
          }
        ]
      }
    }
  }`

P.S. You would find this error if you would use JSON.stringify with an object instead of a string.

const bodyData = JSON.stringify(
  {
    fields: {
      "summary": "Summit 2019 is awesome!",
      "issuetype": {
        "name": "Task"
      },
      "project": {
        "key": "LOD"
      },
      "description": {
        "type": "doc",
        "version": 1,
        "content": [
          {
            "type": "paragraph",
            "content": [
              {
                "text": "This is the description.",
                "type": "text"
              }
            ]
          }
        ]
      }
    }
  });
  • Related