{"record":{"id":"fbaf7ff51deb74b3","repo":"gatsbyjs/gatsby","slug":"received-body-was-empty","errorCode":null,"errorMessage":"Received body was empty!","messagePattern":"Received body was empty!","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"packages/gatsby-source-drupal/src/gatsby-node.ts","lineNumber":884,"sourceCode":"          actions.deleteNode(getNode(createNodeId(id)))\n          return reporter.log(`Deleted node: ${id}`)\n        }\n        const nodeToUpdate = JSON.parse(JSON.parse(req.body)).data\n        return await handleWebhookUpdate(\n          {\n            nodeToUpdate,\n            actions,\n            cache,\n            createNodeId,\n            createContentDigest,\n            getCache,\n            getNode,\n            reporter,\n          },\n          pluginOptions\n        )\n      } else {\n        res.status(400).send(`Received body was empty!`)\n        return reporter.log(`Received body was empty!`)\n      }\n    }\n  )\n}\n\nexports.pluginOptionsSchema = ({ Joi }) =>\n  Joi.object({\n    baseUrl: Joi.string()\n      .required()\n      .description(`The URL to root of your Drupal instance`),\n    proxyUrl: Joi.string().description(\n      `The CDN URL equivalent to your baseUrl`\n    ),\n    apiBase: Joi.string().description(\n      `The path to the root of the JSONAPI — defaults to \"jsonapi\"`\n    ),\n    basicAuth: Joi.object({","sourceCodeStart":866,"sourceCodeEnd":902,"githubUrl":"https://github.com/gatsbyjs/gatsby/blob/e85d62f1779e353eaac1753211629a26d123e26c/packages/gatsby-source-drupal/src/gatsby-node.ts#L866-L902","documentation":"gatsby-source-drupal's webhook endpoint (onWebhook) responds 400 when the DELETE/update webhook request has an empty body, so there is no node payload to process. It guards the webhook receiver before JSON parsing.","triggerScenarios":"Thrown at packages/gatsby-source-drupal/src/gatsby-node.ts:884 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the Drupal webhook sends a JSON body","Re-send the webhook with the node payload","Check webhook secret/URL configuration if bodies are being stripped"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e85d62f1779e353eaac1753211629a26d123e26c","analyzedAt":"2026-08-26T17:50:09.662Z","contentChangedAt":"2026-08-26T17:50:09.662Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}