# Registrar un cliente

> Cómo un miembro de la junta directiva registra una integración desde la consola Desarrolladores, qué tipo elegir, qué hay que registrar exactamente.

URL: https://developers.vimine.network/es/start/register-a-client/

Cada integración es un **cliente** registrado desde la consola **Desarrolladores** de la app de Vimine. La consola
está reservada a la junta directiva de la asociación: si no formas parte de ella, pide a un miembro de la junta que
registre el cliente por ti y te entregue las credenciales.

Sin una asociación — una agencia, quien desarrolla un plugin, quien quiere probar la API — pide a la plataforma una
**invitación de desarrollador**: tendrás un [sandbox](https://developers.vimine.network/es/guides/sandbox/) propio, una asociación de prueba con socios
sintéticos, y registrarás allí tú mismo los clientes de prueba, aceptando los términos para desarrolladores. Los clientes
de producción siguen siendo de la asociación para la que trabajas.

## Tipos de cliente

| Tipo | Para | Credenciales | Notas |
|---|---|---|---|
| **Sitio web** (público) | páginas en el navegador | solo `client_id` | PKCE obligatorio; URI de redirección `https` exactos |
| **App nativa** | apps móviles o de escritorio | solo `client_id` | como el anterior; redirecciones loopback (`http://127.0.0.1:{port}/…`) o esquema personalizado |
| **Servidor** (confidencial) | un backend de la asociación | `client_id` + `client_secret` | el secreto se muestra una sola vez; nunca en un navegador |

Los clientes públicos y nativos hacen **Iniciar sesión con Vimine** y llaman a la API con el token del socio. Los
clientes confidenciales pueden además autenticarse por su cuenta (`client_credentials`) para los permisos de
«cliente», como el estado de los carnés.

## Entornos

| Entorno | Dónde vive | Cuándo está activo |
|---|---|---|
| **Test** | en el [sandbox](https://developers.vimine.network/es/guides/sandbox/) de la asociación (creado cuando hace falta) | **de inmediato** |
| **Producción** | en la asociación real | después de que Vimine lo active: recibes un correo |

Los clientes de prueba emiten tokens con `mode: "test"` y no pueden tocar la asociación real. Sus credenciales
confidenciales empiezan por `vms_test_`.

## Qué hay que registrar

1. **Nombre** — lo que el socio verá en la página de consentimiento («*Nombre* quiere acceder a tu perfil…»).
2. **Tipo** y **entorno**.
3. **URI de redirección** — las páginas a las que Vimine puede devolver el navegador después del inicio de sesión.
   La coincidencia es **exacta** (esquema, host, puerto, ruta): registra todas las páginas de callback que vayas a
   usar.
4. **Orígenes autorizados** — los orígenes (`https://www.example.org`) desde los que tus páginas llaman a la API en
   el navegador. Se usan para CORS y como destinos permitidos después del cierre de sesión
   (`post_logout_redirect_uri`).
5. **Permisos** — los scopes que la integración puede solicitar. Pide solo lo que necesitas: el socio los ve todos.
   Un cliente público o nativo solo puede tener permisos de socio; los permisos de «cliente» requieren un cliente
   confidencial. La tabla está en [Permisos, errores y límites](https://developers.vimine.network/es/guides/scopes-and-errors/).

Al crearlo recibes el `client_id` (`vmc_…`) y, para los clientes confidenciales, el `client_secret` (`vms_…`), que se
muestra **una sola vez**. Para los clientes de prueba, la consola muestra también los socios sintéticos del sandbox y
su contraseña.

## Ciclo de vida

- **Regenerar secreto** — el secreto nuevo se muestra una sola vez; **el anterior sigue funcionando durante 24
  horas**, para que puedas actualizar tus sistemas sin interrupciones.
- **Suspender** — los tokens del cliente dejan de funcionar hasta que lo reactives. La reactivación está en manos de
  la junta directiva.
- **Revocar** — definitivo: todas las sesiones del cliente terminan de inmediato y los socios dejan de verlo entre
  sus apps conectadas.
- Los socios pueden retirar su consentimiento en cualquier momento desde **Apps conectadas** en su cuenta: las
  sesiones de ese cliente para ese socio terminan.

:::tip[Desarrollo local]
Un cliente de **test** puede tener URI de redirección y orígenes `http://localhost:…`: es la forma normal de
desarrollar. En producción, solo `https` (salvo loopback, para las apps nativas).
:::
