Saltar al contenido principal

Autenticación

Todas las solicitudes a la API de KintiSoft requieren autenticación mediante API Keys.

La autenticación permite identificar:

  • El tenant que realiza la solicitud
  • Los permisos disponibles
  • El entorno autorizado

Arquitectura multi-tenant​

KintiSoft utiliza una arquitectura multi-tenant basada en subdominios.

Cada tenant 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​

HeaderValor
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/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.

TipoUso
DevelopmentDesarrollo y pruebas
ProductionProducción
Read OnlyAcceso solo lectura
Full AccessAcceso 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 tenant
  • Mayor seguridad
  • Configuración independiente por organización
  • Escalabilidad horizontal

Entornos​

Cada tenant puede tener distintos entornos:

EntornoURL
Producciónhttps://tenant.kintisoft.com
Sandboxhttps://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