Para desarrolladores
Crea integraciones con la plataforma MySpeedPuzzling. Accede a resultados de jugadores, estadísticas, colecciones y más a través de nuestra REST API.
Documentación API
Interfaz Swagger UI interactiva con todos los endpoints disponibles, parámetros de solicitud y esquemas de respuesta.
Demo en vivo
Mira una integración OAuth2 funcionando en acción. Autentícate, obtén datos y explora el flujo.
Código fuente
Aplicación demo PHP completa que muestra el flujo OAuth2 authorization code. Clónala y empieza a construir.
Autenticación
Dos formas de autenticarse con la API, según tu caso de uso.
Personal Access Token
Genera un token para acceder a tus propios datos programáticamente. Ideal para Home Assistant, scripts personales y automatizaciones.
Authorization: Token msp_pat_...
OAuth2 — Autenticación de usuario
Flujo authorization code para aplicaciones de terceros. Los usuarios autorizan a tu app a acceder a sus datos con scopes detallados. Soporta operaciones de lectura y escritura.
OAuth2 — Servicio
Flujo client credentials para comunicación entre servicios. Acceso de solo lectura a los datos de cualquier jugador público sin interacción del usuario.
Cómo autenticarse
¿Para qué sirve?
Cuando quieres acceder solo a tus propios datos. Perfecto para automatizaciones personales — importa tus resultados en Home Assistant, muestra tus estadísticas en un dashboard personal, registra tu progreso en una hoja de cálculo o crea un script de notificaciones personalizado.
Genera un token desde tu Configuración de perfil y úsalo en la cabecera Authorization:
curl -H "Authorization: Token msp_pat_YOUR_TOKEN_HERE" \
https://myspeedpuzzling.com/api/v1/me
PAT te da acceso completo a todos los endpoints /api/v1/me/*. No se necesitan scopes. No se puede acceder a datos de otros jugadores.
¿Para qué sirve?
Cuando estás creando una app donde los usuarios inician sesión con su cuenta de MySpeedPuzzling. Tu app puede acceder a sus datos en su nombre — mostrar sus resultados en tu sitio web, permitirles añadir tiempos de resolución a través de tu herramienta de competición o gestionar sus colecciones desde una interfaz personalizada.
Paso 1: Redirige al usuario para que autorice tu app:
https://myspeedpuzzling.com/oauth2/authorize?
client_id=YOUR_CLIENT_ID
&response_type=code
&redirect_uri=https://your-app.com/callback
&scope=profile:read results:read
&state=RANDOM_STATE
Paso 2: Intercambia el código de autorización por tokens:
curl -X POST https://myspeedpuzzling.com/oauth2/token \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE_FROM_REDIRECT" \
-d "redirect_uri=https://your-app.com/callback" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"
Paso 3: Usa el access token:
curl -H "Authorization: Bearer ACCESS_TOKEN" \
https://myspeedpuzzling.com/api/v1/me/results
Paso 4: Cuando el access token expire, usa el refresh token para obtener uno nuevo:
curl -X POST https://myspeedpuzzling.com/oauth2/token \
-d "grant_type=refresh_token" \
-d "refresh_token=REFRESH_TOKEN" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"
El access token expira en 1 hora. Los refresh tokens son válidos durante 1 mes.
¿Para qué sirve?
Cuando necesitas datos estadísticos o quieres acceder a los resultados públicos de cualquier jugador sin interacción del usuario. Ideal para construir widgets de clasificación, pantallas de resultados de competiciones, dashboards de estadísticas comunitarias o herramientas de análisis de datos.
Paso 1: Solicita un access token directamente:
curl -X POST https://myspeedpuzzling.com/oauth2/token \
-d "grant_type=client_credentials" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "scope=results:read statistics:read"
Paso 2: Usa el access token para leer datos de cualquier jugador público:
curl -H "Authorization: Bearer ACCESS_TOKEN" \
https://myspeedpuzzling.com/api/v1/players/PLAYER_UUID/results
Acceso de solo lectura. Los endpoints /me no están disponibles. Los jugadores ocultos/privados devuelven resultados vacíos.
Scopes disponibles
profile:read
predeterminado
Leer perfil de usuario
results:read
Leer resultados del jugador
statistics:read
Leer estadísticas del jugador
collections:read
Leer colecciones del jugador
solving-times:write
solo auth code
Crear y editar tiempos de resolución
collections:write
solo auth code
Crear, editar y eliminar colecciones
Endpoints disponibles
Los endpoints que puedes usar dependen de tu método de autenticación.
| Endpoint | PAT | Auth Code | Client Credentials |
|---|---|---|---|
| Tus propios datos (/me) | |||
GET /api/v1/me |
— | ||
GET /api/v1/me/results |
— | ||
GET /api/v1/me/statistics |
— | ||
GET /api/v1/me/collections |
— | ||
POST /api/v1/me/solving-times |
— | ||
PUT /api/v1/me/solving-times/{id} |
— | ||
POST/PUT/DELETE /api/v1/me/collections/* |
— | ||
| Datos públicos de otros jugadores | |||
GET /api/v1/players/{id}/results |
— | ||
GET /api/v1/players/{id}/statistics |
— | ||
GET /api/v1/players/{id}/collections |
— | ||
/me./me.Política de uso justo
Antes de generar tokens o solicitar acceso a la API, por favor lee y acepta nuestra Política de uso justo de la API.
Empezar
Uso personal
¿Quieres acceder a tus propios datos? Genera un Personal Access Token al instante desde la configuración de tu perfil. No se necesita aprobación.
Iniciar sesiónAplicación de terceros
¿Estás creando una app que necesita acceso OAuth2? Envía una solicitud y la revisaremos. Recibirás las credenciales una vez aprobada.
Inicia sesión para solicitar¿Preguntas? Escríbenos a jan@myspeedpuzzling.com.