JSON y HTTP estándar
Verbos y códigos de estado convencionales. Respuestas siempre en application/json con codificación UTF-8.
Desarrolladores
Un solo origen para el catálogo de la plataforma y para los contenidos públicos de cada empresa. Su sitio web puede ser completamente independiente y aun así consumir sus propios datos.
Base https://api.mangora.pe/v1
Cómo está pensada
Verbos y códigos de estado convencionales. Respuestas siempre en application/json con codificación UTF-8.
En los extremos autenticados el tenant sale de la credencial, nunca de un parámetro que el cliente pueda cambiar.
El prefijo /v1 no cambia de forma incompatible. Lo que cambie de contrato vivirá en una versión nueva.
Autenticación
El catálogo de la plataforma es público. Los datos de una empresa exigen una llave emitida desde su panel, con alcance acotado a esa empresa.
GET /v1/empresas/mi-empresa/catalogo HTTP/1.1
Host: api.mangora.pe
Authorization: Bearer mgr_live_••••••••••••••••
Accept: application/jsonLa llave se genera en Configuración → Integraciones y puede revocarse en cualquier momento. Nunca la incruste en código de navegador: una llave visible en el frontend es una llave comprometida.
Referencia
| Método | Ruta | Acceso | Devuelve |
|---|---|---|---|
GET | /v1/salud | Público | Estado de la plataforma y sus dependencias. |
GET | /v1/modulos | Público | Catálogo de módulos disponibles en la plataforma. |
GET | /v1/planes | Público | Planes publicados con su moneda y precio. |
POST | /v1/contacto | Público | Registra una solicitud de contacto comercial. |
GET | /v1/empresas/{slug} | Perfil público de la empresa de la llave. | |
POST | /v1/archivos/url-firmada | URL temporal para subir un archivo a Cloudflare R2. | |
POST | /v1/comunicaciones/email/enviar | Envía un correo en nombre del proyecto. | |
POST | /v1/comunicaciones/whatsapp/enviar | Envía un WhatsApp en nombre del proyecto. |
Ejemplo
Extremo público, sin credenciales. Útil para verificar conectividad.
# sin llave
curl -s https://api.mangora.pe/v1/modulos{
"total": 32,
"modulos": [
{
"clave": "crm",
"nombre": "CRM Comercial",
"grupo": "Comercial y clientes"
}
]
}Errores
Todo fallo devuelve la misma forma, para que su cliente no necesite adivinar según el extremo.
{
"error": {
"codigo": "no_encontrado",
"mensaje": "La empresa no existe"
}
}| Estado | Código | Cuándo |
|---|---|---|
| 400 | solicitud_invalida | Falta un campo o el formato no es válido |
| 401 | no_autenticado | Llave ausente, mal formada o revocada |
| 404 | no_encontrado | El recurso no existe o no es visible |
| 429 | demasiadas_solicitudes | Se superó el límite de peticiones |
| 500 | error_interno | Falla del servidor; se registra y se investiga |
Le damos una llave de prueba y acompañamos la primera integración.