[SOLVED] Integration type lambda: how to send json object in request body

Hi all
I’m learning serverless framework and I would like to know how to send a json object in the body of a PUT request with integration type lambda. Bellow is the object (my language is java, but I guess it doesn’t matter):

public class Product {
    private Long id;
    private String name;
    private Double value;
    private String description;
    //getters & setters
} 

I did try many ways around this in my serverless.yml to map this request correctllly, but no success:

updateProduct:
handler: com.serverless.requests.UpdateProduct
role: arn:aws:iam::42424242424242:role/DBA
environment:
  TABLE_NAME: Product
events:
  - http:
      path: product
      method: put
      integration: lambda
      request:
          template:
            application/json:
              '{
                    "id": "$input.id",
                    "name": "$input.params(''name'')",
                    "value": "$input.params(''value'')",
                    "description": "$input.params(''description'')"
                  }'

The lambda function should look like this:
public class UpdateProduct implements RequestHandler<Product, ApiGatewayResponse> {

   @Override
   public ApiGatewayResponse handleRequest(Product input, Context context) {
        ... 
}

So how can I send the product object in the request body and retrieve it in the lambda function?
thanks

After a lot of time searching I figured it out! The correct way to map that request is this:

updateProduct:
    handler: com.serverless.requests.UpdateProduct
    role: arn:aws:iam::423672971386:role/DBA
    environment:
      TABLE_NAME: Product
    events:
      - http:
          path: product
          method: put
          integration: lambda
          request:
            schema:
              application/json: ${file(models/product-shema.json)} 
            template:
              application/json: $input.json('$')

That way the lambda function can receive the product object as a parameter