> ## Documentation Index
> Fetch the complete documentation index at: https://docs.piriod.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear un webhook

> Conoce cómo escribir el código para manejar las notificaciones al webhook.

Para agregar webhooks a tu integración debes crear un endpoint para exponerlo en internet a través de una URL (por ejemplo, [https://myproduct.com/webhooks](https://myproduct.com/webhooks)). Crear un endpoint de webhook en tu servidor no es tan diferente a crear cualquier página en su sitio web o aplicación. Puede estar escrito en Ruby, PHP, NodeJS, Python usando o no un framework de Python como Flask.

## Consideraciones

En cada activación de un evento, Piriod envía los datos del webhook a su endpoint en formato JSON.

* `event` - corresponde al [nombre del evento](https://docs.piriod.com/guide/desarrolladores/webhooks#eventos).
* `object_id` - corresponde al id del objeto que activó el evento.

Por lo tanto, como mínimo, el endpoint del webhook debe esperar datos a través de una solicitud POST y confirmar la recepción exitosa de esos datos.

## Respuesta HTTP y desactivación automática

Tu endpoint debe devolver un código de estado HTTP 2xx a Piriod. Cualquier respuesta fuera de este rango, incluidos los códigos 3xx, indica a Piriod que el evento no se recibió correctamente.

<Warning>
  Si endpoint devuelve un código de estado distinto de 2xx en **3 llamadas consecutivas**, el webhook se desactiva automáticamente. Deberás volver a activarlo manualmente desde el dashboard de Piriod.
</Warning>

Dado que la entrega exitosa es fundamental, su punto final debe devolver una respuesta 2xx antes de ejecutar cualquier lógica de negocio compleja que pueda causar un error o exceder el tiempo de espera de 6 segundos.

## Example code

El siguiente ejemplo muestra un endpoint de Python/Flask que confirma la recepción y luego obtiene el objeto Payment completo de la API de Piriod.

```python theme={null}
import requests
from flask import Flask

app = Flask(__name__)

PIRIOD_API = 'https://api.piriod.com'

credentials = {
    'Authorization': f'Token {your_piriod_token}',
    'x-simple-workspace': 'your_piriod_organization_id'
}

@app.route('/webhooks', methods=['POST'])
def webhooks():
    payload = request.json
    if not payload:
        abort(400)
    if payload.get('event') == 'payment.created':
        payment = _get_payment(payload.get('id'))
        # do anything with your new payment
    return True

def _get_payment(id):
    r = requests.get(f'{PIRIOD_API}/payments/{id}/', headers=credentials)
    if not r.status_code == requests.codes.ok:
        abort(r.status_code)
    return r.json()

if __name__ == '__main__':
    app.run(debug=True)
```

Una vez que tu endpoint esté listo y sea accesible públicamente, el siguiente paso es registrarlo en Piriod.
