Skip to main content

Documentation Index

Fetch the complete documentation index at: https://piriod-d406ac55.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

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). 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.
  • 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.
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.
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.
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.