> For the complete documentation index, see [llms.txt](https://ayuda.bims.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ayuda.bims.app/api/general/autenticacion.md).

# Autenticación

Para acceder a funciones de BIMS mediante su API, deberá autenticarse como una cuenta de usuario de BIMS configurada en la instancia de BIMS a la que desea conectarse, y se aplicarán los permisos asignados a esa cuenta de usuario, de la misma manera en que se aplicarán en la interfaz de usuario.

## Mecanismos de Autenticación

BIMS ofrece dos métodos de autenticación a través del API:

1. Mediante un API Key
2. Mediante un Usuario y Contraseña

### Autenticación mediante API Key

Para autenticarse mediante API Key, envíelo en alguno de los siguientes encabezados.&#x20;

**Opciones de Headers de Autenticación**

| Nombre          | Valor               |
| --------------- | ------------------- |
| `Authorization` | Bearer: `<API Key>` |
| `Authorization` | `<API Key>`         |
| `X-API-Key`     | `<API Key>`         |

Los API Keys no tienen una fecha de expiración, pero pueden ser desactivados administrativamente.

### Autenticación mediante Login

<mark style="color:green;">`POST`</mark> `/api/users/login`

Si no cuenta con un API Key, pero cuenta con el usuario y la contraseña de la cuenta de BIMS, entonces puede autenticarse mediante un login.

Guarde el valor Session.id recibido y envíelo en las siguientes consultas al API via URL en el argumento "sid".

El Session.id tiene una fecha de expiración, definida en el atributo Session.expiration\_date. Luego de esa fecha el Session.id ya no tendrá vigencia y deberá volver a hacer login.

Si encuentra que el `User` tiene configurado un API Key en el atributo `User.api_key`, entonces luego del login puede emplear la autenticación via API Key, evitando así la necesidad de manejar la expiración de la sesión.

**Headers**

| Nombre         | Valor              |
| -------------- | ------------------ |
| `Content-Type` | `application/json` |

**Body**

| Nombre     | Tipo     | Descripción                                                      |
| ---------- | -------- | ---------------------------------------------------------------- |
| `user`     | `string` | Nombre de Usuario                                                |
| `password` | `string` | Hash MD5 de la Contraseña                                        |
| `tenant`   | `string` | Código de Empresa (Exclusivo y requerido solo para cuentas SaaS) |

**Response**

{% tabs %}
{% tab title="200" %}

```json
{
    "status": "ok",
    "code": "200",
    "data": {
        "User": {
            "id": "3",
            "name": "BIMS DB2",
            "login": "bims_support",
            ...
        },
        "Company": {
            "id": null,
            "name": null,
            "country_id": null
        },
        "Group": {
            "id": "1",
            "name": "Administradores",
            "full": true,
            "perms": null,
            "Subgroup": []
        },
         ...
        "Session": {
            "id": "mhd3iehk855r7oj3pkmualftr3",
            "expire": "2024-11-23 18:08:34",
            "current_timestamp": "2024-11-22 18:08:34"
        }
    },
    "last_update": "2024-11-22 18:08:34"
}
```

{% endtab %}

{% tab title="401" %}

```json
{
    "status": "error",
    "code": "401",
    "message": "Login Incorrecto",
    "last_update": "2024-11-22 18:11:31"
}
```

{% endtab %}
{% endtabs %}
