> ## Documentation Index
> Fetch the complete documentation index at: https://tournaments-partners.exuratech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Panel propio y API administrativa

> Autenticación, compañías, conexiones y gestión de competencias desde el backend del broker.

Un broker que construya su propio panel necesita una cuenta administrativa autorizada. **La clave CRM de inscripción no sirve para gestionar competencias**. La sesión administrativa se limita por rol y compañía; Exura Tech debe aprovisionar o autorizar la identidad antes de usarla.

## Autenticación

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
POST /api/v1/admin/auth/login
Content-Type: application/json

{"email":"admin@example.com","password":"<password>"}
```

La respuesta incluye `access_token`, `token_type`, `expires_in`, `expires_at` y `manager`. Usa `Authorization: Bearer <access_token>` en llamadas administrativas; `GET /api/v1/admin/auth/me` verifica la sesión. Protege esa credencial en el backend del broker o en una sesión segura del panel; no la incluyas en un iframe o frontend público.

Un `SUPER_ADMIN` puede emitir tokens de sistema mediante `POST /api/v1/admin/auth/system-token`. Ese permiso es exclusivo del operador autorizado; un broker no debe asumir que puede emitirlo. La vigencia y rotación se acuerdan con Exura Tech.

## Compañía y conexión

| Método | Ruta | Permiso y uso |
| - | - | - |
| `GET` | `/api/v1/companies` | Admin: lista compañías visibles; filtro `is_active` |
| `POST` | `/api/v1/companies` | Solo `SUPER_ADMIN`: crea compañía |
| `GET` / `PATCH` | `/api/v1/companies/{company_id}` | Admin autorizado: lee o edita compañía |
| `GET` | `/api/v1/external-connections?company_id={id}` | Admin: lista conexiones visibles; filtro `is_active` |
| `POST` | `/api/v1/external-connections` | Admin con acceso a la compañía: crea conexión |
| `GET` / `PATCH` | `/api/v1/external-connections/{id}` | Admin autorizado: lee o edita conexión |
| `GET` | `/api/v1/external-connections/{id}/mt5-groups` | Admin: consulta grupos disponibles |

Para crear compañía se envían `name`, `slug`, `logo_url` opcional e `is_active`. Para conexión se envían `company_id`, `name`, `host`, `port` opcional, `login`, `password`, `platform: "MT5"` e `is_active`. La API no devuelve la contraseña de conexión en las lecturas. Las credenciales de servidor MT5 se configuran en el backend, nunca en JavaScript público. Normalmente Exura Tech prepara estos recursos durante el onboarding del broker.

## Torneos en un panel propio

`POST /api/v1/tournaments` crea el torneo con la sesión administrativa y devuelve ID, UUID y enlaces. `PATCH /api/v1/tournaments/{id}` edita; `POST`/`PUT /api/v1/tournaments/{uuid}/registration-dates` administra la ventana de inscripción; `GET /api/v1/tournaments/{id}/registrations` lista inscritos y cuentas. Esta última respuesta contiene credenciales: limita el acceso y evita guardarla en registros del navegador. Consulta la [referencia de torneos](/broker/torneos-api) para campos y rutas públicas.

## Competencias en un panel propio

Con `company_id` y `connection_id` autorizados, crea con `POST /api/v1/competitions`, lista con `GET /api/v1/competitions` y edita con `PUT /api/v1/competitions/{uuid}`. El inicio de una competencia en vivo no se puede cambiar, el fin debe seguir en el futuro y una competencia terminada ya no se edita. Consulta `GET /api/v1/competitions/{uuid}/admin` para rellenar el formulario.

El panel debe separar claramente **generar/rotar clave CRM** de **consultar detalles**: `GET .../integration` no revela un token anterior; `POST .../integration-key` devuelve uno nuevo y revoca el anterior. Lista inscritos con `GET .../participants`, revisa `GET .../incidents` y conserva el motivo de cualquier corrección final hecha mediante `POST .../adjustment`. Las correcciones solo se aceptan tras finalizar.

> [!WARNING]
>
> La API pública de ranking puede llamarse desde un frontend propio, pero todas las rutas anteriores requieren control de acceso administrativo. No expongas un bearer administrativo ni el secreto de conexión en código descargado por los participantes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.