package v1 import ( "encoding/json" "fmt" "github.com/gin-gonic/gin" ) func bindChatwootPayload(c *gin.Context, wrapperKey string, target interface{}) error { raw, err := c.GetRawData() if err != nil { return err } if len(raw) == 0 { return fmt.Errorf("request body required") } var envelope map[string]json.RawMessage if err := json.Unmarshal(raw, &envelope); err == nil { if wrapped, ok := envelope[wrapperKey]; ok { raw = wrapped } } return json.Unmarshal(raw, target) }