> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tp.sima.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticación

> Cómo autenticarte y gestionar tokens en la API de Terceros de SIMA

## Resumen

SIMA usa autenticación basada en tokens. Cada solicitud debe incluir un `access_token` válido obtenido via el endpoint de login. Los tokens tienen fecha de expiración y pueden renovarse con un `refresh_token` sin necesidad de hacer login nuevamente.

***

## Endpoint de login

<ParamField path="POST" type="string">/api/v2/login</ParamField>

### Headers requeridos

| Header             | Valor              | Descripción                                       |
| ------------------ | ------------------ | ------------------------------------------------- |
| `Accept`           | `application/json` | Requerido en todas las solicitudes                |
| `Content-Type`     | `application/json` | Requerido en todas las solicitudes                |
| `X-SIMA-SYSTEM-ID` | `8`                | Identifica tu sistema como integrador de Terceros |

<Info>
  El header `X-SIMA-SYSTEM-ID: 8` es requerido en **todas** las llamadas a la API, no solo en el login. Sin él, las solicitudes serán rechazadas.
</Info>

### Cuerpo de la solicitud

```json theme={null}
{
  "email": "tu-usuario-api@example.com",
  "password": "tu-contraseña"
}
```

### Respuesta

```json theme={null}
{
  "access_token": "aff6ac1d-b48c-4ea4-aba2-a2753bf2abf5",
  "refresh_token": "20626ffd-1288-4106-ac10-dc5a5f3487bc",
  "expiration_datetime": "2024-06-16T17:38:58-03:00",
  "society": {
    "id": 34,
    "legalName": "Nombre de tu Sociedad",
    "syncCheck": "usuario@example.com3293547"
  }
}
```

Guardá tanto el `access_token` como el `refresh_token` — los vas a necesitar para sesiones continuas.

***

## Usar el token

Incluí el `access_token` como Bearer token en el header `Authorization` de cada solicitud:

```bash theme={null}
Authorization: Bearer aff6ac1d-b48c-4ea4-aba2-a2753bf2abf5
```

**Ejemplo completo:**

```bash theme={null}
curl -X GET https://api.qa.sima.ag/api/v3/establishments \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer aff6ac1d-b48c-4ea4-aba2-a2753bf2abf5" \
  -H "X-SIMA-SYSTEM-ID: 8"
```

***

## Expiración y renovación del token

Los tokens expiran según la fecha indicada en `expiration_datetime`. Cuando un token expira, tenés dos opciones:

**Opción A — Re-login:** Llamá a `/api/v2/login` nuevamente con tus credenciales.

**Opción B — Refresh:** Usá el `refresh_token` para obtener un nuevo `access_token` sin enviar credenciales (recomendado para integraciones en producción).

***

## Requisitos del usuario

La cuenta utilizada para acceso API debe tener el rol `api_integrated` asignado en SIMA. Si la autenticación falla con email/contraseña válidos, contactá a [soporte@sima.ag](mailto:soporte@sima.ag) para verificar que el rol esté configurado.

***

## Respuestas de error

| HTTP Status        | Significado                                   |
| ------------------ | --------------------------------------------- |
| `401 Unauthorized` | Token inválido o expirado                     |
| `403 Forbidden`    | Token válido pero permisos insuficientes      |
| `400 Bad Request`  | Cuerpo de la solicitud faltante o mal formado |

***

## Resumen

<Steps>
  <Step title="Llamá a POST /api/v2/login">
    Incluí el header `X-SIMA-SYSTEM-ID: 8` y tus credenciales en el cuerpo.
  </Step>

  <Step title="Guardá el access_token">
    Almacenalo de forma segura — lo usarás en cada solicitud siguiente.
  </Step>

  <Step title="Agregá el header Authorization">
    Incluí `Authorization: Bearer TU_TOKEN` y `X-SIMA-SYSTEM-ID: 8` en cada solicitud.
  </Step>

  <Step title="Manejá la expiración">
    Monitoreá `expiration_datetime` y renovalo proactivamente para evitar interrupciones.
  </Step>
</Steps>
