# Middy.js Middleware must be an object containing at least one key among "before", "after", "onError"

**URL:** <https://discourse.sst.dev/t/middy-js-middleware-must-be-an-object-containing-at-least-one-key-among-before-after-onerror/2772>\
**Category:** General\
**Created:** [December 6, 2022, 9:46pm UTC](https://discourse.sst.dev/t/middy-js-middleware-must-be-an-object-containing-at-least-one-key-among-before-after-onerror/2772 "2022-12-06T21:46:48Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![vidaljuanp](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vidaljuanp](https://discourse.sst.dev/u/vidaljuanp)\
**Post date:** [December 6, 2022, 9:46pm UTC](https://discourse.sst.dev/t/middy-js-middleware-must-be-an-object-containing-at-least-one-key-among-before-after-onerror/2772/1 "2022-12-06T21:46:48Z")

</div>

I’m trying to get started with Middy to validate input schema on AWS lambda.

The lambda function below keeps throwing this error:

**Middleware must be an object containing at least one key among “before”, “after”, “onError”**

Anyone knows what could be the issue?

I’m running

```auto
     Node v18.12.1
    "@middy/core": "^4.0.2",
    "@middy/http-error-handler": "^4.0.2",
    "@middy/http-json-body-parser": "^4.0.2",
    "@middy/validator": "^4.0.2",

```

here is the lambda code

```auto
import middy from "@middy/core";
import validator from "@middy/validator";
import httpErrorHandler from "@middy/http-error-handler";
import jsonBodyParser from "@middy/http-json-body-parser";

const baseHandler = (event) => {
    const { fname, lname } = event.body;
    return {
      statusCode: 200,
      headers: { "Content-Type": "text/plain" },
      body: `Hello, ${fname}-${lname}.`,
    };
  };

const inputSchema = {
    type: "object",
    properties: {
      body: {
        type: "object",
        properties: {
          fname: { type: "string" },
          lname: { type: "string" },
        },
        required: ["fname", "lname"],
      },
    },
  };

const handler = middy(baseHandler)
    .use(jsonBodyParser())
    .use(
        validator({
        inputSchema,
        })
    )
    .use(httpErrorHandler());

export { handler };

```

I expected that the validator throws an error when the input parameters are not provided to the function

---

<div class="post-metadata">

**Author:** ![vidaljuanp](https://avatars.discourse-cdn.com/v4/letter/v/c67d28/32.png) [@vidaljuanp](https://discourse.sst.dev/u/vidaljuanp)\
**Post date:** [December 7, 2022, 5:54am UTC](https://discourse.sst.dev/t/middy-js-middleware-must-be-an-object-containing-at-least-one-key-among-before-after-onerror/2772/2 "2022-12-07T05:54:21Z")

</div>

Thanks Will Farrell

Change inputSchema to eventSchema. The name was changed in v3, and fully removed in v4.

See: [Upgrade 3.x -\> 4.x | Middy.js](https://middy.js.org/docs/upgrade/3-4)

[view it on GitHub](https://github.com/middyjs/middy/issues/952#issuecomment-1340061516)
