Welcome!
What did you do?
Called POST /group/participant to add a participant to a group, sending the exact payload documented in the Postman collection:
{
"groupJid": "120363332413160732@g.us",
"participants": ["557499879409"],
"action": "add"
}
Same result for every action (add / remove / promote / demote).
What did you expect?
The participant to be added to the group and the API to return {"message": "success"}, as the UpdateParticipant handler implements.
What did you observe instead of what you expected?
The request is always rejected with HTTP 400 and the body:
{"error": "participants is required and cannot be empty"}
regardless of the participants sent (raw number 557499879409 or full JID 557499879409@s.whatsapp.net).
Root cause: in pkg/routes/routes.go the route registers the wrong validation middleware:
routes.POST("/participant", r.jidValidationMiddleware.ValidateJIDFields("number", "participants"), r.groupHandler.UpdateParticipant)
ValidateJIDFields is designed for single-string fields. Since participants is an array, the type assertion value.(string) in the middleware fails, strValue defaults to "", and it aborts on the else if strValue == "" branch (jid_validation_middleware.go, line ~80) BEFORE reaching the handler. The handler UpdateParticipant is correct — the request never gets there.
Suggested fix (one line) — use the array-aware middleware already used by /group/create for the same participants field:
routes.POST("/participant", r.jidValidationMiddleware.ValidateMultipleNumbers("participants"), r.groupHandler.UpdateParticipant)
(The "number" field can be dropped: this route has no number field in its body.)
This means all participant actions (add / remove / promote / demote) are currently unusable via the API. Reproduced on v0.6.1, 0.7.0 and 0.7.1 — the route has had this middleware since at least v0.6.1.
Screenshots/Videos
No response
Which version are you using?
0.7.1 (also reproduced on 0.7.0 and 0.6.1)
What is your environment?
Linux
If applicable, paste the log output
Request: POST /group/participant
Body: {"groupJid":"120363040128842797@g.us","action":"add","participants":["554799009115@s.whatsapp.net"]}
Response: 400 {"error":"participants is required and cannot be empty"}
Additional Notes
The Postman collection and the UpdateParticipant handler are both correct — the mismatch is only in the middleware wired to the route. A PR changing that single line should fully resolve it.
Welcome!
What did you do?
Called
POST /group/participantto add a participant to a group, sending the exact payload documented in the Postman collection:{
"groupJid": "120363332413160732@g.us",
"participants": ["557499879409"],
"action": "add"
}
Same result for every action (add / remove / promote / demote).
What did you expect?
The participant to be added to the group and the API to return
{"message": "success"}, as theUpdateParticipanthandler implements.What did you observe instead of what you expected?
The request is always rejected with HTTP 400 and the body:
{"error": "participants is required and cannot be empty"}
regardless of the participants sent (raw number
557499879409or full JID557499879409@s.whatsapp.net).Root cause: in
pkg/routes/routes.gothe route registers the wrong validation middleware:ValidateJIDFieldsis designed for single-string fields. Sinceparticipantsis an array, the type assertionvalue.(string)in the middleware fails,strValuedefaults to"", and it aborts on theelse if strValue == ""branch (jid_validation_middleware.go, line ~80) BEFORE reaching the handler. The handlerUpdateParticipantis correct — the request never gets there.Suggested fix (one line) — use the array-aware middleware already used by
/group/createfor the sameparticipantsfield:(The
"number"field can be dropped: this route has nonumberfield in its body.)This means all participant actions (add / remove / promote / demote) are currently unusable via the API. Reproduced on v0.6.1, 0.7.0 and 0.7.1 — the route has had this middleware since at least v0.6.1.
Screenshots/Videos
No response
Which version are you using?
0.7.1 (also reproduced on 0.7.0 and 0.6.1)
What is your environment?
Linux
If applicable, paste the log output
Request: POST /group/participant
Body: {"groupJid":"120363040128842797@g.us","action":"add","participants":["554799009115@s.whatsapp.net"]}
Response: 400 {"error":"participants is required and cannot be empty"}
Additional Notes
The Postman collection and the
UpdateParticipanthandler are both correct — the mismatch is only in the middleware wired to the route. A PR changing that single line should fully resolve it.