# Valida un body JSON con una acción

> Define un esquema de entrada en una acción y deja que Total.js rechace las peticiones inválidas antes de ejecutar tu código.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: es
Content-SHA256: d95c46fa157cddf0b8f31958f84cd7fc7a32ccf15922c355bb3de44e8f76dded
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

En Total.js 5 declaras la entrada de una acción con `input`. Un asterisco delante del nombre del campo (`*email`) lo marca como obligatorio, y el tipo después de los dos puntos (`Email`) lo valida el framework. Tu función `action` solo se ejecuta cuando los datos son válidos.

Las rutas apuntan a una acción con el operador `-->`. El prefijo `*` significa "acción" (en lugar de una función de controlador).

```js definitions/subscribe.js
NEWACTION('Subscribe/exec', {
	name: 'Subscribe to the newsletter',
	input: '*email:Email, name:String',
	action: function($, model) {
		$.success(model.email);
	}
});
```

```js controllers/subscribe.js
exports.install = function() {
	ROUTE('POST /subscribe/ --> *Subscribe/exec');
};
```

Envía un body válido y la acción se ejecuta. Envía un e-mail inválido y el framework responde con un error de validación sin llamar a tu función.
