Skip to content

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
PAT — solo tus datos. No se necesitan scopes, acceso completo a todos los endpoints /me.
Auth Code — todos los endpoints. El acceso depende de los scopes otorgados. Scopes de escritura disponibles.
Client Credentials — acceso de solo lectura a cualquier jugador público. Sin endpoints /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ón
Aplicació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.