# Credenciales

> Guarda keys, tokens y contraseñas de tu empresa cifrados y úsalos en tus herramientas sin escribirlos en el código ni mostrárselos al modelo.

En **Ajustes › Credenciales** cargas las claves de tus sistemas: API keys, tokens, usuarios y contraseñas. Después las eliges como [entrada](/avanzados/entradas) de una herramienta (`credencial.clave`) y eltick las pone en el pedido recién cuando sale hacia tu sistema.

<Note>
  Las credenciales están en los planes **Escala** y **Enterprise**. Las ven y las cambian solo los **dueños** y **administradores** del equipo.
</Note>

## Por qué no en el código

- **Nadie las vuelve a ver.** Se guardan cifradas y no vuelven a la app: ni tu equipo, ni el modelo, ni el equipo de eltick que revisa el código. Solo se pueden reemplazar.
- **El código recibe un token opaco**, no el valor. Aunque lo escriba en un log o lo devuelva, no expone la clave.
- **Solo salen hacia sus dominios.** Aunque una herramienta intente mandarla a otro lugar, el pedido se corta.
- **Se cambian en un solo lugar.** Si rotas una clave, la reemplazas acá y todas las herramientas que la usan siguen funcionando.

Por eso, en la [revisión del código](/avanzados/revision) rechazamos las herramientas que tienen claves escritas en el código.

## Tipos

| Tipo | Qué cargas | Cómo se aplica con `auth` |
| --- | --- | --- |
| **API key** | La clave, y si va en un header o en un parámetro de la URL, con su nombre | `X-API-Key: …` o `?api_key=…` |
| **Token Bearer** | El token | `Authorization: Bearer …` |
| **Usuario y contraseña** | Usuario y contraseña | `Authorization: Basic …` |
| **Headers** | Hasta 10 headers con sus valores | Se agregan todos |
| **OAuth 2.0** | URL del token, client ID, client secret y scope (opcional) | eltick pide el token (client credentials), lo guarda hasta que vence y lo renueva solo. `Authorization: Bearer …` |
| **Texto secreto** | Un valor | No se usa como `auth`: pones la entrada donde va (un header, la URL o el cuerpo) y eltick la reemplaza |

## Crear una credencial

1. Entra a **Ajustes › Credenciales** y toca **Nueva credencial**.
2. Escribe un **nombre** (*SIACoop*) y su **clave** (`siacoop`). La clave es cómo la eliges en las entradas y no se puede cambiar después.
3. Elige el **tipo** y completa los valores.
4. Escribe los **dominios** a los que se puede mandar, separados por coma: `api.siacoop.com.ar`. Con `*.siacoop.com.ar` permites también los subdominios.
5. Si vence, carga la **fecha de vencimiento**: la lista te avisa cuando falten menos de dos semanas.

## Usarla en una herramienta

En la pestaña **Entradas** de la herramienta, agrega una entrada de tipo **Variable** y elige la credencial en el grupo **Credenciales**.

**En una herramienta de código**, pásala como `auth`:

```js
const res = await eltick.fetch("https://api.siacoop.com.ar/v2/deuda", { auth: input.credenciales })
```

O ponla donde tu API la espera, si es un texto secreto:

```js
await eltick.fetch("https://api.siacoop.com.ar/v2/deuda", { headers: { "X-Clave": input.clave } })
```

**En una herramienta HTTP**, las entradas de credenciales se aplican solas como autenticación y no se mandan como datos.

## Reemplazar, rotar y borrar

- Toca la credencial y **Reemplazar valores** para cargar una clave nueva. Los valores anteriores no se muestran. Si es OAuth 2.0, el token guardado se descarta.
- Puedes cambiar el nombre, los dominios y el vencimiento sin tocar los valores.
- Al **borrar** una credencial, las herramientas que la usan dejan de funcionar hasta que elijas otra. Antes de borrarla ves cuáles son.

La lista muestra cuándo se usó cada credencial por última vez y qué herramientas la usan.
