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:

  • 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

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 empresa
  • Mayor seguridad
  • Configuración independiente por organización
  • Escalabilidad horizontal
  • Personalización por tenant

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