Seção 1 - Etapa 2.5 - Erro 422 em requisição HTTP Post (nó SendToPriorityQueue)

  • versão n8n: 2.30.7 (Cloud)
  • Banco de dados (padrão: SQLite): padrão
  • configuração n8n EXECUTIONS_PROCESS (padrão: own, main): padrão
  • Executando n8n via (Docker, npm, n8n cloud, desktop app): n8n cloud
  • Sistema operacional: Windows 11

Olá,

Embora meu outro nó HTTP POST Request esteja funcionando corretamente, meu nó SendToPriorityQueue está retornando o seguinte erro:

Sua solicitação é inválida ou não pôde ser processada pelo serviço [item 0]

Um ou mais parâmetros obrigatórios estão faltando. Certifique-se de que você está enviando seu assessment_id e dados de pedido.

Pensei que poderia ser um problema com a entrada, já que a única diferença entre este e o HTTP POST request funcionando é o fato de que a entrada no primeiro é uma lista de pedidos envolvida em um objeto definido chamado enriched_orders, enquanto no último, a solicitação POST falhando, a entrada é um array indefinido de pedidos - não há objeto encapsulador, mas as instruções do curso não o requerem, então não consigo descobrir o que fiz de errado.

Aqui está o JSON para a solicitação POST:

{
"body": {
"order_id": "ORD-014",
"customer_id": "CUST-004",
"customer_name": "DataFlow Ltd",
"subscription": "Enterprise"
},
"headers": {
"x-assessment-id": "0a238a9ad1137d3bf5cf2df2e7355e3b",
"hidden": "hidden",
"accept": "application/json,text/html,application/xhtml+xml,application/xml,text/;q=0.9, image/;q=0.8, /;q=0.7"
},
"method": "POST",
"uri": "``https://learn.app.n8n.cloud/webhook/course/n8n102/priority-queue``",
"gzip": true,
"rejectUnauthorized": true,
"followRedirect": true,
"resolveWithFullResponse": true,
"sendCredentialsOnCrossOriginRedirect": false,
"followAllRedirects": true,
"timeout": 300000,
"encoding": null,
"json": false,
"useStream": true

Esse despejo de opções é o objeto de solicitação interno do n8n, e duas coisas nele se destacam: “json”: false, e não há cabeçalho content-type em lugar algum da lista.

Portanto, o endpoint muito provavelmente está recebendo um corpo que não está analisando como JSON, o que produz exatamente o “um ou mais parâmetros obrigatórios ausentes” que você está vendo, mesmo que os campos estejam claramente lá no payload. O servidor não está encontrando order_id porque nunca analisou o corpo em campos.

Eu compararia seus dois nós HTTP Request especificamente em Body Content Type (Send Body, depois Body Content Type, depois JSON) em vez de na forma dos dados. Se o nó funcionando está definido como JSON e este não está, essa diferença sozinha explica, e o wrapper enriched_orders é uma pista falsa.

Duas coisas que resolveriam isso rapidamente:

1. Ative “Include Response Headers and Status” no nó que está falhando. Um corpo 422 geralmente nomeia o campo que não conseguiu encontrar, o que transforma isso de adivinhação em uma resposta de uma linha.

2. Redirecione temporariamente o nó que está falhando para um nó Webhook em outro fluxo de trabalho e dispare uma vez. Isso mostra exatamente o que chega, tanto o content-type quanto se o corpo chegou como campos analisados ou como uma única string. Geralmente mais rápido do que raciocinar sobre isso.

Uma coisa que não consigo dizer daqui: se o endpoint também quer assessment_id no corpo, não apenas como cabeçalho x-assessment-id. O erro nomeia “assessment_id e dados do pedido” juntos, o que soa como se esperasse ambos no payload, mas isso depende do contrato da API do curso. Se o corpo de resposta da etapa 1 nomear, essa é sua resposta.