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.