Autenticación
Todas las solicitudes a la API de KintiSoft requieren autenticación mediante API Keys.
La autenticación permite identificar:
- La empresa que realiza la solicitud
- El tenant asociado
- Los permisos disponibles
- El entorno autorizado
Arquitectura multi-tenant
KintiSoft utiliza una arquitectura multi-tenant basada en subdominios.
Cada empresa opera en un entorno aislado utilizando un subdominio único:
https://tenant.kintisoft.com
Ejemplos:
https://acme.kintisoft.com
https://distribuidora-central.kintisoft.com
https://ferreteria-demo.kintisoft.com
Base URL de la API
Las solicitudes a la API deben realizarse utilizando el subdominio del tenant correspondiente.
https://tenant.api.kintisoft.com/v1
Ejemplo:
https://acme.api.kintisoft.com/v1
Cómo funciona la autenticación
KintiSoft utiliza autenticación basada en Bearer Tokens.
Debes enviar tu API Key en el encabezado Authorization de cada solicitud.
Ejemplo de solicitud autenticada
curl https://acme.api.kintisoft.com/v1/customers \
-H "Authorization: Bearer YOUR_API_KEY"
Headers requeridos
| Header | Valor |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
Identificación del tenant
El tenant se identifica automáticamente mediante el subdominio utilizado en la solicitud.
No es necesario enviar:
- tenant_id
- company_id
- organization_id
en los headers o payloads.
Ejemplo usando JavaScript
fetch('https://acme.api.kintisoft.com/v1/customers', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
})
Ejemplo usando PHP
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://acme.api.kintisoft.com/v1/customers', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY',
'Content-Type' => 'application/json',
],
]);
echo $response->getBody();
Ejemplo usando Python
import requests
response = requests.get(
'https://acme.api.kintisoft.com/v1/customers',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
)
print(response.json())
Obtener una API Key
Puedes generar API Keys desde el panel de administración de KintiSoft.
Ruta recomendada:
Configuración → API → API Keys
Tipos de API Keys
KintiSoft puede manejar distintos tipos de claves según el entorno y permisos.
| Tipo | Uso |
|---|---|
| Development | Desarrollo y pruebas |
| Production | Producción |
| Read Only | Acceso solo lectura |
| Full Access | Acceso completo |
Seguridad
Nunca expongas tu API Key en:
- Código frontend público
- Repositorios públicos
- Aplicaciones móviles sin protección
- Archivos compartidos
Recomendaciones
Usa variables de entorno
KINTISOFT_API_KEY=your_api_key
Rota las credenciales periódicamente
Recomendamos:
- Revocar claves no utilizadas
- Rotar credenciales regularmente
- Limitar permisos según necesidad
Usa HTTPS
Todas las solicitudes deben realizarse mediante HTTPS.
Las solicitudes HTTP no seguras serán rechazadas.
Respuestas de error
API Key inválida
{
"error": {
"code": "invalid_api_key",
"message": "The provided API key is invalid."
}
}
Token faltante
{
"error": {
"code": "missing_authorization_header",
"message": "Authorization header is required."
}
}
Permisos insuficientes
{
"error": {
"code": "insufficient_permissions",
"message": "You do not have permission to access this resource."
}
}
Beneficios de la arquitectura multi-tenant
La arquitectura multi-tenant de KintiSoft permite:
- Aislamiento de datos por empresa
- Mayor seguridad
- Configuración independiente por organización
- Escalabilidad horizontal
- Personalización por tenant
Entornos
Cada tenant puede tener distintos entornos:
| Entorno | URL |
|---|---|
| Producción | https://tenant.kintisoft.com |
| Sandbox | https://sandbox-tenant.kintisoft.com |
SDKs oficiales
Los SDKs oficiales de KintiSoft gestionan automáticamente:
- Headers de autenticación
- Reintentos
- Manejo de errores
- Configuración base
- Resolución del tenant
JavaScript
const client = new KintiSoft({
tenant: 'acme',
apiKey: process.env.KINTISOFT_API_KEY
})
PHP
$client = new KintiSoftClient([
'tenant' => 'acme',
'api_key' => $_ENV['KINTISOFT_API_KEY']
]);
Python
client = KintiSoft(
tenant="acme",
api_key=os.getenv("KINTISOFT_API_KEY")
)
Próximos pasos
Una vez autenticado, puedes continuar con:
- Quickstart
- Primer endpoint
- SDKs oficiales
- Webhooks
- API Reference