code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👥 Grupo de un partido</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

➕ Crear un partido/

❌ Eliminar un partido/

👥 Grupo de un partido/

👀 Información de un partido/

✏ Editar un partido/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👥 Grupo de un partido

[GET] /v1/matches/@id/groups

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del partido.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches/@id/groups

Respuesta de la petición:

{
  "data": {
    "group": {
      "id": "fb983148-d4f6-41c3-8fb5-bda2146f7fa6",
      "name": "A_2025",
      "description": "A",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-20 21:27:39",
      "updated_at": "2025-03-20 21:27:39",
      "registration_category": {
        "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
        "name": "open",
        "description": "Libre"
      }
    },
    "relationship": {
      "id": "ce404089-6724-41db-8b13-e66f1e32ec7a",
      "group_id": "fb983148-d4f6-41c3-8fb5-bda2146f7fa6",
      "match_id": "b91a8d6b-9063-443d-a627-cc5e07fe6b2c",
      "created_at": "2025-03-20 21:27:39",
      "updated_at": "2025-03-20 21:27:39"
    }
  },
  "status": 200,
  "description": "Information about the match group"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🎾 Partidos</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

➕ Crear un partido/

❌ Eliminar un partido/

👥 Grupo de un partido/

👀 Información de un partido/

✏ Editar un partido/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

🎾 Partidos

Partidos asignados.

[GET] /v1/matches

Parámetros de consulta:

Parámetro 	Tipo 	Rango 	Por defecto 	Descripción

page 	integer 	min_numeric: 1 	1 	Número de la página de resultados de los partidos.

orderBy 	string 	contains: [created_at, updated_at] 	created_at 	Campo de ordenamiento de los partidos.

sortBy 	string 	contains: [asc, desc] 	desc 	Modo de ordenamiento de los partidos.

registration_category_id 	string 	exact_len: 36 	null 	Identificador de la categoría de inscripción de los partidos (ver).

match_category_id 	string 	exact_len: 36 	null 	Identificador de la categoría de las rondas de los partidos (ver).

match_status_id 	string 	exact_len: 36 	null 	Identificador del estatus de juego de los partidos (ver).

is_active 	boolean 	contains: [yes/no, on/off, 1/0, true/false] 	null 	Filtrar los partidos por estatus de actividad.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches?page=2&orderBy=created_at&sortBy=desc&registration_category_id=cba89529-0ba9-49e4-85ad-83e63c8e9d7e&match_category_id=dc19c9bf-4339-4ed2-a603-5b2dd1058a6&match_status_id=29d4b630-468f-4dcc-b775-5bad0b796a89&is_active=true

Respuesta de la petición:

{
  "data": [
    {
      "id": "fd73aa9c-fac8-4761-a6ba-12c674612929",
      "is_active": 1,
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-18 14:41:31",
      "registration_category": {
        "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
        "name": "open",
        "description": "Libre"
      },
      "match_category": {
        "id": "6c7f2686-7b40-47ff-b5b5-cbd52c6cea89",
        "name": "qualifier",
        "description": "Clasificación"
      },
      "match_status": {
        "id": "29d4b630-468f-4dcc-b775-5bad0b796a89",
        "name": "scheduled",
        "description": "Programado"
      }
    },
    {
      "id": "097c1b44-1bed-40fe-b522-ced60e91c185",
      "is_active": 1,
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-18 14:41:31",
      "registration_category": {
        "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
        "name": "open",
        "description": "Libre"
      },
      "match_category": {
        "id": "6c7f2686-7b40-47ff-b5b5-cbd52c6cea89",
        "name": "qualifier",
        "description": "Clasificación"
      },
      "match_status": {
        "id": "29d4b630-468f-4dcc-b775-5bad0b796a89",
        "name": "scheduled",
        "description": "Programado"
      }
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 8,
    "total": 6,
    "count": 48,
    "offset": 0
  },
  "description": "Information about all the matches with pagination"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0

license: mit


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Información de un partido</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

➕ Crear un partido/

❌ Eliminar un partido/

👥 Grupo de un partido/

👀 Información de un partido/

✏ Editar un partido/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👀 Información de un partido

[GET] /v1/matches/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del partido.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches/@id

Respuesta de la petición:

{
  "data": {
    "id": "0ffe3275-808c-4d65-b68a-767135f1ea6c",
    "is_active": 1,
    "created_at": "2025-03-18 14:41:31",
    "updated_at": "2025-03-18 14:41:31",
    "registration_category": {
      "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
      "name": "open",
      "description": "Libre"
    },
    "match_category": {
      "id": "6c7f2686-7b40-47ff-b5b5-cbd52c6cea89",
      "name": "qualifier",
      "description": "Clasificación"
    },
    "match_status": {
      "id": "29d4b630-468f-4dcc-b775-5bad0b796a89",
      "name": "scheduled",
      "description": "Programado"
    }
  },
  "status": 200,
  "description": "Information about the match"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>✏ Editar un partido</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

➕ Crear un partido/

❌ Eliminar un partido/

👥 Grupo de un partido/

👀 Información de un partido/

✏ Editar un partido/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

✏ Editar un partido

[PUT] /v1/matches/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del partido.

Cuerpo de la petición:

Campo 	Tipo 	Requerido 	Rango 	Descripción

match_category_id 	string 	false 	exact_len: 36 	Identificador de la categoría de la ronda del partido (ver).

match_status_id 	string 	false 	exact_len: 36  	Identificador del estatus de juego del partido (ver).

is_active 	boolean 	false 	contains: [yes/no, on/off, 1/0, true/false] 	Estatus de actividad del partido.

Ejemplo:

curl -X PUT \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches/@id \
  -d '{
    "match_category_id": "91ee11b0-dd16-40e5-b0a5-a6bb17c3938a",
    "match_status_id": "85612c7a-9dba-492a-84d0-b8c2c1fff166",
    "is_active": "0"
  }'

Respuesta de la petición:

{
  "data": {
    "id": "27113a35-baed-40b2-9af9-e0c261582b6a",
    "is_active": 0,
    "created_at": "2025-03-18 14:41:31",
    "updated_at": "2025-03-20 14:14:41",
    "registration_category": {
      "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
      "name": "open",
      "description": "Libre"
    },
    "match_category": {
      "id": "91ee11b0-dd16-40e5-b0a5-a6bb17c3938a",
      "name": "eighths",
      "description": "Octavos de final"
    },
    "match_status": {
      "id": "85612c7a-9dba-492a-84d0-b8c2c1fff166",
      "name": "finalized",
      "description": "Finalizado"
    }
  },
  "status": 200,
  "description": "The match was updated successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>➕ Crear una pareja con jugadores</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

➕ Crear una pareja con jugadores/

👀 Jugadores de una pareja/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear una pareja con jugadores

[POST] /v1/pairs/players

Cuerpo de la petición:

Propiedades 	Tipo 	Requerido 	Rango 	Descripción

registration_category_id 	string 	true 	exact_len: 36 	Identificador de la categoría de inscripción de la pareja (ver).

players 	array[players] 	true 	array_size_equal: 2 	Una lista con la información de los jugadores de la pareja (ver).

Ejemplo:

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/players \
  -d '{
    "registration_category_id": "59b675bb-4559-4748-8974-0753e716e8af",
    "players": [
      {
        "fullname": "Ricardo García Jiménez",
        "city": "Salvatierra",
        "weight": 120,
        "height": 1.82,
        "age": 26,
        "experience": 0
      },
      {
        "fullname": "Juan José Ramírez López",
        "city": "Irapuato",
        "weight": 70,
        "height": 1.65,
        "age": 25,
        "experience": 5
      }
    ]
  }'

Respuesta de la petición:

{
  "data": {
    "pair": {
      "id": "98eaa36b-98e1-4842-80d3-771627af3458",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-07 14:44:28",
      "updated_at": "2025-03-07 14:44:28",
      "registration_category": {
        "id": "15134933-1932-4df4-bb5a-b304774b229c",
        "name": "open",
        "description": "Libre"
      }
    },
    "players": [
      {
        "player": {
          "id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
          "fullname": "Juan José Ramírez López",
          "city": "Irapuato",
          "weight": "70.00",
          "height": "1.65",
          "age": 25,
          "experience": 5,
          "is_active": 1,
          "created_at": "2025-03-07 14:44:28",
          "updated_at": "2025-03-07 14:44:28"
        },
        "relationship": {
          "id": "1decc97f-29a4-4b5f-abcb-4427aeeaf7d0",
          "player_id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
          "pair_id": "98eaa36b-98e1-4842-80d3-771627af3458",
          "created_at": "2025-03-07 14:44:28",
          "updated_at": "2025-03-07 14:44:28"
        }
      },
      {
        "player": {
          "id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
          "fullname": "Ricardo García Jiménez",
          "city": "Salvatierra",
          "weight": "120.00",
          "height": "1.82",
          "age": 26,
          "experience": 0,
          "is_active": 1,
          "created_at": "2025-03-07 14:44:28",
          "updated_at": "2025-03-07 14:44:28"
        },
        "relationship": {
          "id": "64c27726-0281-45fe-9d79-9cdf9f32c2eb",
          "player_id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
          "pair_id": "98eaa36b-98e1-4842-80d3-771627af3458",
          "created_at": "2025-03-07 14:44:28",
          "updated_at": "2025-03-07 14:44:28"
        }
      }
    ]
  },
  "status": 201,
  "description": "The pair with players was created successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👫 + 🏃♂ Parejas y jugadores</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

➕ Crear una pareja con jugadores/

👀 Jugadores de una pareja/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👫 + 🏃♂ Parejas y jugadores

Parejas de jugadores.

[GET] /v1/pairs/players

Parámetros de consulta:

Parámetro 	Tipo 	Rango 	Por defecto 	Descripción

page 	integer 	min_numeric: 1 	1 	Número de la página de resultados de las parejas con sus jugadores.

orderBy 	string 	contains: [created_at, updated_at] 	created_at 	Campo de ordenamiento de las parejas con sus jugadores.

sortBy 	string 	contains: [asc, desc] 	desc 	Modo de ordenamiento de las parejas con sus jugadores.

registration_category_id 	string 	exact_len: 36 	null 	Identificador de la categoría de inscripción de las parejas con sus jugadores (ver).

is_eliminated 	boolean 	contains: [yes/no, on/off, 1/0, true/false] 	null 	Filtrar las parejas con sus jugadores por estatus de eliminación.

is_active 	boolean 	contains: [yes/no, on/off, 1/0, true/false] 	null 	Filtrar las parejas con sus jugadores por estatus de actividad.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/players?page=2&orderBy=created_at&sortBy=desc&registration_category_id=aacace26-65b6-4ac9-8e7c-fcb32061c3fd&is_eliminated=true&is_active=true

Respuesta de la petición:

{
  "data": [
    {
      "pair": {
        "id": "4f473639-0ad1-4984-b02a-1861d1c43324",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-22 13:02:03",
        "updated_at": "2025-03-22 13:02:03",
        "registration_category": {
          "id": "aacace26-65b6-4ac9-8e7c-fcb32061c3fd",
          "name": "seniors",
          "description": "50 y más"
        }
      },
      "players": [
        {
          "player": {
            "id": "9afee6a9-a06f-43fd-b926-d41a2d951ead",
            "fullname": "Nery Contreras",
            "city": "Morelia",
            "weight": "86.00",
            "height": "1.69",
            "age": 60,
            "experience": 20,
            "is_active": 1,
            "created_at": "2025-03-22 11:15:23",
            "updated_at": "2025-03-22 11:15:23"
          },
          "relationship": {
            "id": "66b98335-a110-4da2-895e-1d061b0041d1",
            "player_id": "9afee6a9-a06f-43fd-b926-d41a2d951ead",
            "pair_id": "4f473639-0ad1-4984-b02a-1861d1c43324",
            "created_at": "2025-03-22 13:02:03",
            "updated_at": "2025-03-22 13:02:03"
          }
        },
        {
          "player": {
            "id": "75d132ab-31b7-400d-932c-647060aba8b1",
            "fullname": "José Gpe Fierros",
            "city": "Morelia",
            "weight": "76.00",
            "height": "1.76",
            "age": 60,
            "experience": 17,
            "is_active": 1,
            "created_at": "2025-03-22 11:15:54",
            "updated_at": "2025-03-22 11:15:54"
          },
          "relationship": {
            "id": "217638ce-a42b-4bda-bcab-9e7fc43adf8b",
            "player_id": "75d132ab-31b7-400d-932c-647060aba8b1",
            "pair_id": "4f473639-0ad1-4984-b02a-1861d1c43324",
            "created_at": "2025-03-22 13:02:03",
            "updated_at": "2025-03-22 13:02:03"
          }
        }
      ]
    },
    {
      "pair": {
        "id": "5a93fab1-5470-4f4e-b36d-beb875f1a17f",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-22 13:01:43",
        "updated_at": "2025-03-22 13:01:43",
        "registration_category": {
          "id": "aacace26-65b6-4ac9-8e7c-fcb32061c3fd",
          "name": "seniors",
          "description": "50 y más"
        }
      },
      "players": [
        {
          "player": {
            "id": "2383a4ee-31df-4916-848d-7998b85bf333",
            "fullname": "Joaquin López",
            "city": "Morelia",
            "weight": "78.00",
            "height": "1.70",
            "age": 51,
            "experience": 15,
            "is_active": 1,
            "created_at": "2025-03-22 11:14:40",
            "updated_at": "2025-03-22 11:14:40"
          },
          "relationship": {
            "id": "70b41baa-fd50-4c7a-bf3a-df2858acb169",
            "player_id": "2383a4ee-31df-4916-848d-7998b85bf333",
            "pair_id": "5a93fab1-5470-4f4e-b36d-beb875f1a17f",
            "created_at": "2025-03-22 13:01:43",
            "updated_at": "2025-03-22 13:01:43"
          }
        },
        {
          "player": {
            "id": "864c9d65-cb15-474e-864f-b404b2ba702c",
            "fullname": "Salvador Farías",
            "city": "Morelia",
            "weight": "85.00",
            "height": "1.74",
            "age": 58,
            "experience": 20,
            "is_active": 1,
            "created_at": "2025-03-22 11:15:02",
            "updated_at": "2025-03-22 11:15:02"
          },
          "relationship": {
            "id": "a3826553-ff57-49f9-9701-ed850ffc967e",
            "player_id": "864c9d65-cb15-474e-864f-b404b2ba702c",
            "pair_id": "5a93fab1-5470-4f4e-b36d-beb875f1a17f",
            "created_at": "2025-03-22 13:01:43",
            "updated_at": "2025-03-22 13:01:43"
          }
        }
      ]
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 8,
    "total": 6,
    "count": 48,
    "offset": 0
  },
  "description": "Information about all the pairs players with pagination"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Jugadores de una pareja</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

➕ Crear una pareja con jugadores/

👀 Jugadores de una pareja/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👀 Jugadores de una pareja

[GET] /v1/pairs/@id/players

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la pareja.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/@id/players

Respuesta de la petición:

{
  "data": [
    {
      "player": {
        "id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
        "fullname": "Juan José Ramírez López",
        "city": "Irapuato",
        "weight": "70.00",
        "height": "1.65",
        "age": 25,
        "experience": 5,
        "is_active": 1,
        "created_at": "2025-03-07 14:44:28",
        "updated_at": "2025-03-07 14:44:28"
      },
      "relationship": {
        "id": "1decc97f-29a4-4b5f-abcb-4427aeeaf7d0",
        "player_id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
        "pair_id": "98eaa36b-98e1-4842-80d3-771627af3458",
        "created_at": "2025-03-07 14:44:28",
        "updated_at": "2025-03-07 14:44:28"
      }
    },
    {
      "player": {
        "id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
        "fullname": "Ricardo García Jiménez",
        "city": "Salvatierra",
        "weight": "120.00",
        "height": "1.82",
        "age": 26,
        "experience": 0,
        "is_active": 1,
        "created_at": "2025-03-07 14:44:28",
        "updated_at": "2025-03-07 14:44:28"
      },
      "relationship": {
        "id": "64c27726-0281-45fe-9d79-9cdf9f32c2eb",
        "player_id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
        "pair_id": "98eaa36b-98e1-4842-80d3-771627af3458",
        "created_at": "2025-03-07 14:44:28",
        "updated_at": "2025-03-07 14:44:28"
      }
    }
  ],
  "status": 200,
  "description": "Information about the pair players"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>➕ Crear una pareja</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

➕ Crear una pareja/

❌ Eliminar una pareja/

👥 Grupo de una pareja/

👀 Información de una pareja/

✏ Editar una pareja/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear una pareja

[POST] /v1/pairs

Cuerpo de la petición:

Propiedades 	Tipo 	Requerido 	Rango 	Descripción

registration_category_id 	string 	true 	exact_len: 36 	Identificador de la categoría de inscripción de la pareja (ver).

players 	array[players] 	true 	array_size_equal: 2 	Una lista con los identificadores de los jugadores de la pareja (ver).

Ejemplo:

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs \
  -d '{
    "registration_category_id":"15134933-1932-4df4-bb5a-b304774b229c",
    "players":[
      "07b80796-fd26-4b1b-9f5d-6330e96ed849",
      "b7f22815-7082-41ac-9ba5-0e43022d7d5f"
    ]
  }'

Respuesta de la petición:

{
  "data": {
    "pair": {
      "id": "e29a4226-cf35-48c8-b976-561ca79931f0",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-13 22:14:25",
      "updated_at": "2025-03-13 22:14:25",
      "registration_category": {
        "id": "15134933-1932-4df4-bb5a-b304774b229c",
        "name": "open",
        "description": "Libre"
      }
    },
    "players": [
      {
        "player": {
          "id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
          "fullname": "Juan José Ramírez López",
          "city": "Irapuato",
          "weight": "70.00",
          "height": "1.65",
          "age": 25,
          "experience": 5,
          "is_active": 1,
          "created_at": "2025-03-07 14:44:28",
          "updated_at": "2025-03-07 14:44:28"
        },
        "relationship": {
          "id": "d1c0b3d6-4fe4-4047-b922-4b272cef4f4a",
          "player_id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
          "pair_id": "e29a4226-cf35-48c8-b976-561ca79931f0",
          "created_at": "2025-03-13 22:14:25",
          "updated_at": "2025-03-13 22:14:25"
        }
      },
      {
        "player": {
          "id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
          "fullname": "Ricardo García Jiménez",
          "city": "Salvatierra",
          "weight": "120.00",
          "height": "1.82",
          "age": 26,
          "experience": 0,
          "is_active": 1,
          "created_at": "2025-03-07 14:44:28",
          "updated_at": "2025-03-07 14:44:28"
        },
        "relationship": {
          "id": "fc14c42a-49ea-416c-a99c-a6eea0a040ea",
          "player_id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
          "pair_id": "e29a4226-cf35-48c8-b976-561ca79931f0",
          "created_at": "2025-03-13 22:14:25",
          "updated_at": "2025-03-13 22:14:25"
        }
      }
    ]
  },
  "status": 201,
  "description": "The pair was created successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>❌ Eliminar una pareja</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

➕ Crear una pareja/

❌ Eliminar una pareja/

👥 Grupo de una pareja/

👀 Información de una pareja/

✏ Editar una pareja/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

❌ Eliminar una pareja

[DELETE] /v1/pairs/@id

La pareja no debe contener información asociada a grupos y partidos.

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la pareja.

Ejemplo:

curl -X DELETE \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/@id

Respuesta de la petición:

{
  "data": {
    "id": "040f0b81-9467-48f6-8f35-c2c72c90fd67",
    "is_eliminated": 0,
    "is_active": 1,
    "created_at": "2025-03-18 14:42:47",
    "updated_at": "2025-03-18 14:42:47",
    "registration_category": {
      "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
      "name": "open",
      "description": "Libre"
    }
  },
  "status": 200,
  "description": "The pair was deleted successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👥 Grupo de una pareja</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

➕ Crear una pareja/

❌ Eliminar una pareja/

👥 Grupo de una pareja/

👀 Información de una pareja/

✏ Editar una pareja/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👥 Grupo de una pareja

[GET] /v1/pairs/@id/groups

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la pareja.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/@id/groups

Respuesta de la petición:

{
  "data": {
    "group": {
      "id": "5a478de5-5be1-482f-8d44-b98a79d1552c",
      "name": "A_2025",
      "description": "A",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-18 14:41:31",
      "registration_category": {
        "id": "eb69a503-6eb3-4f20-b30b-c9a4762a8cfd",
        "name": "seniors",
        "description": "50 y más"
      }
    },
    "relationship": {
      "id": "d573b626-36e1-46fc-90ab-3adb51f0acb6",
      "pair_id": "087a1273-19c8-4ccf-8751-b2db6811f1cc",
      "group_id": "5a478de5-5be1-482f-8d44-b98a79d1552c",
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-18 14:41:31"
    }
  },
  "status": 200,
  "description": "Information about the pair group"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👫 Parejas</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

➕ Crear una pareja/

❌ Eliminar una pareja/

👥 Grupo de una pareja/

👀 Información de una pareja/

✏ Editar una pareja/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👫 Parejas

Parejas inscritas al torneo.

[GET] /v1/pairs

Parámetros de consulta:

Parámetro 	Tipo 	Rango 	Por defecto 	Descripción

page 	integer 	min_numeric: 1 	1 	Número de la página de resultados de las parejas.

orderBy 	string 	contains: [created_at, updated_at] 	created_at 	Campo de ordenamiento de las parejas.

sortBy 	string 	contains: [asc, desc] 	desc 	Modo de ordenamiento de las parejas.

registration_category_id 	string 	exact_len: 36 	null 	Identificador de la categoría de inscripción de las parejas (ver).

is_eliminated 	boolean 	contains: [yes/no, on/off, 1/0, true/false] 	null 	Filtrar las parejas por estatus de eliminación.

is_active 	boolean 	contains: [yes/no, on/off, 1/0, true/false] 	null 	Filtrar las parejas por estatus de actividad.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs?page=2&orderBy=created_at&sortBy=desc&registration_category_id=cba89529-0ba9-49e4-85ad-83e63c8e9d7e&is_eliminated=true&is_active=true

Respuesta de la petición:

{
  "data": [
    {
      "id": "a0b84d91-9a78-4534-ab8f-691405622eb9",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 14:37:30",
      "updated_at": "2025-03-18 14:37:30",
      "registration_category": {
        "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
        "name": "open",
        "description": "Libre"
      }
    },
    {
      "id": "66478a05-50af-4e8f-bfb3-13fe79e1cb4e",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 14:37:30",
      "updated_at": "2025-03-18 14:37:30",
      "registration_category": {
        "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
        "name": "open",
        "description": "Libre"
      }
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 8,
    "total": 5,
    "count": 36,
    "offset": 0
  },
  "description": "Information about all the pairs with pagination"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Información de una pareja</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

➕ Crear una pareja/

❌ Eliminar una pareja/

👥 Grupo de una pareja/

👀 Información de una pareja/

✏ Editar una pareja/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👀 Información de una pareja

[GET] /v1/pairs/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la pareja.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/@id

Respuesta de la petición:

{
  "data": {
    "id": "98eaa36b-98e1-4842-80d3-771627af3458",
    "is_eliminated": 0,
    "is_active": 1,
    "created_at": "2025-03-07 14:44:28",
    "updated_at": "2025-03-07 14:44:28",
    "registration_category": {
      "id": "15134933-1932-4df4-bb5a-b304774b229c",
      "name": "open",
      "description": "Libre"
    }
  },
  "status": 200,
  "description": "Information about the pair"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>✏ Editar una pareja</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

➕ Crear una pareja/

❌ Eliminar una pareja/

👥 Grupo de una pareja/

👀 Información de una pareja/

✏ Editar una pareja/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

✏ Editar una pareja

[PUT] /v1/pairs/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la pareja.

Cuerpo de la petición:

Campo 	Tipo 	Requerido 	Rango 	Descripción

is_eliminated 	boolean 	false 	contains: [yes/no, on/off, 1/0, true/false] 	Estatus de eliminación de la pareja.

is_active 	boolean 	false 	contains: [yes/no, on/off, 1/0, true/false] 	Estatus de actividad de la pareja.

Ejemplo:

curl -X PUT \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/pairs/@id \
  -d '{
    "is_eliminated": "1"
    "is_active": "0"
  }'

Respuesta de la petición:

{
  "data": {
    "id": "a23aa875-d127-483b-9734-9676b93a6ff7",
    "is_eliminated": 1,
    "is_active": 0,
    "created_at": "2025-03-18 14:40:07",
    "updated_at": "2025-03-20 13:37:56",
    "registration_category": {
      "id": "eb69a503-6eb3-4f20-b30b-c9a4762a8cfd",
      "name": "open",
      "description": "Libre"
    }
  },
  "status": 200,
  "description": "The pair was updated successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>➕ Crear un jugador</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear un jugador

[POST] /v1/players

Cuerpo de la petición:

Campo 	Tipo 	Requerido 	Rango 	Descripción

fullname 	string 	true 	between_len: [1, 128] 	Nombre completo del jugador.

city 	string 	true 	between_len: [1, 128] 	Ciudad o localidad de origen del jugador.

weight 	float 	true 	between_numeric: [20, 600] 	Peso en kilos del jugador.

height 	float 	true 	between_numeric: [0.5, 2.5] 	Estatura en metros del jugador.

age 	integer 	true 	between_numeric: [14, 122] 	Edad del jugador.

experience 	integer 	true 	between_numeric: [0, 50] 	Tiempo en años que el jugador ha practicado el deporte.

Ejemplo:

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players \
  -d '{
    "fullname": "Francisco Javier Solís Martínez",
    "city": "Irapuato",
    "weight": "70",
    "height": "1.70",
    "age": "25",
    "experience": "5"
  }'

Respuesta de la petición:

{
  "data": {
    "id": "cbfee9f9-0d0a-4b0c-9ede-0628fc2a3387",
    "fullname": "Francisco Javier Solís Martínez",
    "city": "Irapuato",
    "weight": "70.00",
    "height": "1.70",
    "age": 25,
    "experience": 5,
    "is_active": 1,
    "created_at": "2025-03-13 22:37:14",
    "updated_at": "2025-03-13 22:37:14"
  },
  "status": 201,
  "description": "The player was created successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>❌ Eliminar un jugador</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

❌ Eliminar un jugador

[DELETE] /v1/players/@id

El jugador no debe contener información asociada a una pareja.

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del jugador.

Ejemplo:

curl -X DELETE \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players/@id

Respuesta de la petición:

{
  "data": {
    "id": "004b7a08-6bf0-4852-b0dd-4783058e2d2a",
    "fullname": "Ricardo García Jiménez",
    "city": "Salvatierra",
    "weight": "135.00",
    "height": "1.86",
    "age": 26,
    "experience": 0,
    "is_active": 1,
    "created_at": "2025-03-18 15:01:33",
    "updated_at": "2025-03-18 15:01:33"
  },
  "status": 200,
  "description": "The player was deleted successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👥 Grupo de un jugador</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👥 Grupo de un jugador

[GET] /v1/players/@id/groups

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del jugador.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players/@id/groups

Respuesta de la petición:

{
  "data": {
    "group": {
      "id": "5a478de5-5be1-482f-8d44-b98a79d1552c",
      "name": "A_2025",
      "description": "A",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-18 14:41:31",
      "registration_category": {
        "id": "eb69a503-6eb3-4f20-b30b-c9a4762a8cfd",
        "name": "seniors",
        "description": "50 y más"
      }
    },
    "relationship_pair_player": {
      "id": "e0eb2e6a-4a07-4434-b6dc-7b65620f19c3",
      "player_id": "23b96bfe-b43c-4dd9-8a9e-0f7cd3d019fe",
      "pair_id": "087a1273-19c8-4ccf-8751-b2db6811f1cc",
      "created_at": "2025-03-18 14:40:07",
      "updated_at": "2025-03-18 14:40:07"
    },
    "relationship_group_pair": {
      "id": "d573b626-36e1-46fc-90ab-3adb51f0acb6",
      "pair_id": "087a1273-19c8-4ccf-8751-b2db6811f1cc",
      "group_id": "5a478de5-5be1-482f-8d44-b98a79d1552c",
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-18 14:41:31"
    }
  },
  "status": 200,
  "description": "Information about the player group"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🏃♂ Jugadores</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

🏃♂ Jugadores

Jugadores inscritos al torneo.

[GET] /v1/players

Parámetros de consulta:

Parámetro 	Tipo 	Rango 	Por defecto 	Descripción

page 	integer 	min_numeric: 1 	1 	Número de la página de resultados de los jugadores.

search 	string 	max_len: 255 	'' 	Patrón de búsqueda de los jugadores.

filterBy 	string 	contains: [fullname] 	fullname 	Campo de búsqueda de los jugadores.

orderBy 	string 	contains: [fullname, weight, height, age, experience, created_at, updated_at] 	created_at 	Campo de ordenamiento de los jugadores.

sortBy 	string 	contains: [asc, desc] 	desc 	Modo de ordenamiento de los jugadores.

is_active 	boolean 	contains: [yes/no, on/off, 1/0, true/false] 	null 	Filtrar los jugadores por estatus de actividad.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players?page=2&search=Ricardo&filterBy=fullname&orderBy=age&sortBy=asc&is_active=true

Respuesta de la petición:

{
  "data": [
    {
      "id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
      "fullname": "Ricardo García Jiménez",
      "city": "Salvatierra",
      "weight": "120.00",
      "height": "1.82",
      "age": 26,
      "experience": 0,
      "is_active": 1,
      "created_at": "2025-03-07 14:44:28",
      "updated_at": "2025-03-07 14:44:28"
    },
    {
      "id": "b7f22815-7082-41ac-9ba5-0e43022d7d5f",
      "fullname": "Juan José Ramírez López",
      "city": "Irapuato",
      "weight": "70.00",
      "height": "1.65",
      "age": 25,
      "experience": 5,
      "is_active": 1,
      "created_at": "2025-03-07 14:44:28",
      "updated_at": "2025-03-07 14:44:28"
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 8,
    "total": 1,
    "count": 2,
    "offset": 0
  },
  "description": "Information about all the players with pagination"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👫 Pareja de un jugador</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👫 Pareja de un jugador

[GET] /v1/players/@id/pairs

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del jugador.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players/@id/pairs

Respuesta de la petición:

{
  "data": {
    "pair": {
      "id": "98eaa36b-98e1-4842-80d3-771627af3458",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-07 14:44:28",
      "updated_at": "2025-03-07 14:44:28",
      "registration_category": {
        "id": "15134933-1932-4df4-bb5a-b304774b229c",
        "name": "open",
        "description": "Libre"
      }
    },
    "relationship": {
      "id": "64c27726-0281-45fe-9d79-9cdf9f32c2eb",
      "player_id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
      "pair_id": "98eaa36b-98e1-4842-80d3-771627af3458",
      "created_at": "2025-03-07 14:44:28",
      "updated_at": "2025-03-07 14:44:28"
    }
  },
  "status": 200,
  "description": "Information about the player pair"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Información de un jugador</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👀 Información de un jugador

[GET] /v1/players/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del jugador.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players/@id

Respuesta de la petición:

{
  "data": {
    "id": "07b80796-fd26-4b1b-9f5d-6330e96ed849",
    "fullname": "Ricardo García Jiménez",
    "city": "Salvatierra",
    "weight": "120.00",
    "height": "1.82",
    "age": 26,
    "experience": 0,
    "is_active": 1,
    "created_at": "2025-03-07 14:44:28",
    "updated_at": "2025-03-07 14:44:28"
  },
  "status": 200,
  "description": "Information about the player"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>✏ Editar un jugador</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

➕ Crear un jugador/

❌ Eliminar un jugador/

👥 Grupo de un jugador/

👫 Pareja de un jugador/

👀 Información de un jugador/

✏ Editar un jugador/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

✏ Editar un jugador

[PUT] /v1/players/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del jugador.

Cuerpo de la petición:

Campo 	Tipo 	Requerido 	Rango 	Descripción

fullname 	string 	false 	between_len: [1, 128] 	Nombre completo del jugador.

city 	string 	false 	between_len: [1, 128] 	Ciudad o localidad de origen del jugador.

weight 	float 	false 	between_numeric: [20, 600] 	Peso en kilos del jugador.

height 	float 	false 	between_numeric: [0.5, 2.5] 	Estatura en metros del jugador.

age 	integer 	false 	between_numeric: [14, 122] 	Edad del jugador.

experience 	integer 	false 	between_numeric: [0, 50] 	Tiempo en años que el jugador ha practicado el deporte.

is_active 	boolean 	false 	contains: [yes/no, on/off, 1/0, true/false] 	Estatus de actividad del jugador.

Ejemplo:

curl -X PUT \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/players/@id \
  -d '{
    "fullname": "Francisco Javier Solís Martínez",
    "city": "Irapuato",
    "weight": "72",
    "height": "1.72",
    "age": "26",
    "experience": "6",
    "is_active": "0"
  }'

Respuesta de la petición:

{
  "data": {
    "id": "0cd08ef4-d0dd-4ed1-ae38-af886b932c20",
    "fullname": "Francisco Javier Solís Martínez",
    "city": "Irapuato",
    "weight": "72.00",
    "height": "1.72",
    "age": 26,
    "experience": 6,
    "is_active": 0,
    "created_at": "2025-03-19 00:56:00",
    "updated_at": "2025-03-19 00:58:16"
  },
  "status": 200,
  "description": "The player was updated successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👥 Grupos de una categoría de inscripción</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

👥 Grupos de una categoría de inscripción/

🏆 + 👫 Ranking de las parejas y jugadores de una categoría de inscripción/

👀 Información de una categoría de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👥 Grupos de una categoría de inscripción

[GET] /v1/categories/registrations/@id/groups

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la categoría de inscripción.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/categories/registrations/@id/groups

Respuesta de la petición:

{
  "data": [
    {
      "id": "fb983148-d4f6-41c3-8fb5-bda2146f7fa6",
      "name": "A_2025",
      "description": "A",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-20 21:27:39",
      "updated_at": "2025-03-20 23:52:50",
      "registration_category": {
        "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
        "name": "open",
        "description": "Libre"
      }
    },
    {
      "id": "7836e4bf-c98f-4389-b29c-f771b005ec2c",
      "name": "B_2025",
      "description": "B",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-20 21:27:39",
      "updated_at": "2025-03-20 21:27:39",
      "registration_category": {
        "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
        "name": "open",
        "description": "Libre"
      }
    },
    ...
  ],
  "status": 200,
  "description": "Information about the registration category groups"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🏷 / 📋  Categorías de inscripción</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

👥 Grupos de una categoría de inscripción/

🏆 + 👫 Ranking de las parejas y jugadores de una categoría de inscripción/

👀 Información de una categoría de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

🏷 / 📋  Categorías de inscripción

Categorías de inscripción de los grupos, parejas y partidos.

[GET] /v1/categories/registrations

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/categories/registrations

Respuesta de la petición:

{
  "data": [
    {
      "id": "eb69a503-6eb3-4f20-b30b-c9a4762a8cfd",
      "name": "seniors",
      "description": "50 y más",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
      "name": "open",
      "description": "Libre",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    }
  ],
  "status": 200,
  "description": "Information about all the registrations categories"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🏆 + 👫 Ranking de las parejas y jugadores de una categoría de inscripción</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

👥 Grupos de una categoría de inscripción/

🏆 + 👫 Ranking de las parejas y jugadores de una categoría de inscripción/

👀 Información de una categoría de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

🏆 + 👫 Ranking de las parejas y jugadores de una categoría de inscripción

[GET] /v1/categories/registrations/@id/ranking

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la categoría de inscripción.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/categories/registrations/@id/ranking

Respuesta de la petición:

{
  "data": [
    {
      "pair": {
        "id": "2b54a574-3153-47a4-b2ae-d8353b68b2d6",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-22 03:13:32",
        "updated_at": "2025-03-22 03:13:32",
        "registration_category": {
          "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
          "name": "open",
          "description": "Libre"
        },
        "players": [
          {
            "player": {
              "id": "e8522e06-23ba-43d7-bab7-c5c1c7528c13",
              "fullname": "Laura Vargas",
              "city": "Dolores Hidalgo",
              "weight": "60.50",
              "height": "1.67",
              "age": 25,
              "experience": 6,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "2d29f683-17f0-4edc-8694-39e9f178f40f",
              "player_id": "e8522e06-23ba-43d7-bab7-c5c1c7528c13",
              "pair_id": "2b54a574-3153-47a4-b2ae-d8353b68b2d6",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          },
          {
            "player": {
              "id": "ddd7453f-cf22-4de3-af38-ba799bceda59",
              "fullname": "Pedro Gómez",
              "city": "Silao",
              "weight": "72.50",
              "height": "1.76",
              "age": 30,
              "experience": 11,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "9f951225-35c9-48c3-9169-80486ddb7b7f",
              "player_id": "ddd7453f-cf22-4de3-af38-ba799bceda59",
              "pair_id": "2b54a574-3153-47a4-b2ae-d8353b68b2d6",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          }
        ]
      },
      "rating": {
        "total_winners": "1",
        "total_score": "2"
      }
    },
    {
      "pair": {
        "id": "87a33834-299a-4f51-a8be-ba9c540e0dfd",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-22 03:13:32",
        "updated_at": "2025-03-22 03:13:32",
        "registration_category": {
          "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
          "name": "open",
          "description": "Libre"
        },
        "players": [
          {
            "player": {
              "id": "c2f0e46b-7d19-4598-954a-828b8f7f98b8",
              "fullname": "Alejandro Ruiz",
              "city": "Coroneo",
              "weight": "75.50",
              "height": "1.78",
              "age": 28,
              "experience": 11,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "6dee11bf-95ab-4777-894b-fc824918ed42",
              "player_id": "c2f0e46b-7d19-4598-954a-828b8f7f98b8",
              "pair_id": "87a33834-299a-4f51-a8be-ba9c540e0dfd",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          },
          {
            "player": {
              "id": "e8754436-9859-4ac3-b412-f142b11d810c",
              "fullname": "Verónica Solís",
              "city": "Cortazar",
              "weight": "62.00",
              "height": "1.67",
              "age": 25,
              "experience": 5,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "b05f7332-8045-4209-8de1-616f3125b2cf",
              "player_id": "e8754436-9859-4ac3-b412-f142b11d810c",
              "pair_id": "87a33834-299a-4f51-a8be-ba9c540e0dfd",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          }
        ]
      },
      "rating": {
        "total_winners": "1",
        "total_score": "2"
      }
    },
    {
      "pair": {
        "id": "3f71b2f1-906c-4419-b464-666ec27ac98c",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-22 03:13:32",
        "updated_at": "2025-03-22 03:13:32",
        "registration_category": {
          "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
          "name": "open",
          "description": "Libre"
        },
        "players": [
          {
            "player": {
              "id": "f93a0856-0289-435d-8e4d-e03f7e074c85",
              "fullname": "Elena Morales",
              "city": "Purísima del Rincón",
              "weight": "64.00",
              "height": "1.69",
              "age": 23,
              "experience": 5,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "6533cf0a-666f-4b56-bb1a-9929ea97691d",
              "player_id": "f93a0856-0289-435d-8e4d-e03f7e074c85",
              "pair_id": "3f71b2f1-906c-4419-b464-666ec27ac98c",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          },
          {
            "player": {
              "id": "5fb2f36a-76c2-4ce0-8a01-75bc48bbaf35",
              "fullname": "Diego Fernández",
              "city": "Moroleón",
              "weight": "77.00",
              "height": "1.82",
              "age": 27,
              "experience": 8,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "792e4c9c-0a30-4a37-890e-03ea629dd49e",
              "player_id": "5fb2f36a-76c2-4ce0-8a01-75bc48bbaf35",
              "pair_id": "3f71b2f1-906c-4419-b464-666ec27ac98c",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          }
        ]
      },
      "rating": {
        "total_winners": "0",
        "total_score": "2"
      }
    },
    {
      "pair": {
        "id": "79a230ca-16d0-47ef-8362-c6f30b95f44e",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-22 03:13:32",
        "updated_at": "2025-03-22 03:13:32",
        "registration_category": {
          "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
          "name": "open",
          "description": "Libre"
        },
        "players": [
          {
            "player": {
              "id": "1dd257d2-52fd-4245-a7dd-e46f1d0db923",
              "fullname": "Enrique Castro",
              "city": "Juventino Rosas",
              "weight": "75.00",
              "height": "1.79",
              "age": 28,
              "experience": 12,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "00f2d827-8ae0-4b26-92d4-9479aa6897a3",
              "player_id": "1dd257d2-52fd-4245-a7dd-e46f1d0db923",
              "pair_id": "79a230ca-16d0-47ef-8362-c6f30b95f44e",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          },
          {
            "player": {
              "id": "b75e53e4-d965-4274-b640-10e0f9fc1913",
              "fullname": "Lourdes Herrera",
              "city": "Apaseo el Alto",
              "weight": "62.50",
              "height": "1.67",
              "age": 25,
              "experience": 7,
              "is_active": 1,
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            },
            "relationship": {
              "id": "56d6f1a6-d72d-410c-b27a-6af38391757c",
              "player_id": "b75e53e4-d965-4274-b640-10e0f9fc1913",
              "pair_id": "79a230ca-16d0-47ef-8362-c6f30b95f44e",
              "created_at": "2025-03-22 03:13:32",
              "updated_at": "2025-03-22 03:13:32"
            }
          }
        ]
      },
      "rating": {
        "total_winners": "0",
        "total_score": "1"
      }
    },
    ...
  ],
  "status": 200,
  "description": "Information about the registration category ranking"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Información de una categoría de inscripción</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

👥 Grupos de una categoría de inscripción/

🏆 + 👫 Ranking de las parejas y jugadores de una categoría de inscripción/

👀 Información de una categoría de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

👀 Información de una categoría de inscripción

[GET] /v1/categories/registrations/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador de la categoría de inscripción.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/categories/registrations/@id

Respuesta de la petición:

{
  "data": {
    "id": "15134933-1932-4df4-bb5a-b304774b229c",
    "name": "open",
    "description": "Libre",
    "created_at": "2025-03-07 14:38:11",
    "updated_at": "2025-03-07 14:38:11"
  },
  "status": 200,
  "description": "Information about the registration category"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🏷 / 🧑 Roles</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

👀 Información de un rol/

🏆 Acciones de las rondas/

🧑 Usuarios/

🏷 / 🧑 Roles

Roles de los usuarios de acceso.

[GET] /v1/roles

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/roles

Respuesta de la petición:

{
  "data": [
    {
      "id": "1acc20ec-b070-4c93-be67-40dd206b2d5f",
      "name": "admin",
      "description": "Administrador",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "c0bad9bb-092e-444b-98eb-d55b3cd1c72d",
      "name": "web",
      "description": "Sitio web",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "61654117-62b1-445e-b258-83b807fcd25d",
      "name": "reader",
      "description": "Solo lectura",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "f30b421c-8e30-4bf8-9984-64c3ecef85d0",
      "name": "judge",
      "description": "Juez",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    }
  ],
  "status": 200,
  "description": "Information about all the access users roles"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Información de un rol</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

👀 Información de un rol/

🏆 Acciones de las rondas/

🧑 Usuarios/

👀 Información de un rol

[GET] /v1/roles/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del rol.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/roles/@id

Respuesta de la petición:

{
  "data": {
    "id": "ff23a6f7-0862-4431-b3b3-015beae0cb9f",
    "name": "admin",
    "description": "Administrador",
    "created_at": "2025-03-07 14:38:11",
    "updated_at": "2025-03-07 14:38:11"
  },
  "status": 200,
  "description": "Information about the access user role"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🏆 Acciones de las rondas</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🎲 Asignar grupos, parejas y partidos/

❌ + 👥 Descalificar grupos si todas sus parejas están descalificadas/

🧑 Usuarios/

🏆 Acciones de las rondas

Ejecuta acciones para las rondas del torneo.

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🎲 Asignar grupos, parejas y partidos</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🎲 Asignar grupos, parejas y partidos/

❌ + 👥 Descalificar grupos si todas sus parejas están descalificadas/

🧑 Usuarios/

🎲 Asignar grupos, parejas y partidos

[POST] /v1/rounds/init

Realiza la acción una única vez para las categorías de inscripción que no contengan grupos asignados.

Ejemplo:

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  http://localhost:8080/v1/rounds/init

Respuesta de la petición:

{
  "data": null,
  "status": 200,
  "description": "The round init action was executed successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>❌ + 👥 Descalificar grupos si todas sus parejas están descalificadas</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🎲 Asignar grupos, parejas y partidos/

❌ + 👥 Descalificar grupos si todas sus parejas están descalificadas/

🧑 Usuarios/

❌ + 👥 Descalificar grupos si todas sus parejas están descalificadas

[POST] /v1/rounds/purge

Ejemplo:

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  http://localhost:8080/v1/rounds/purge/groups

Respuesta de la petición:

{
  "data": null,
  "status": 200,
  "description": "The purge groups action was executed successfully"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>➕ Crear un usuario</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear un usuario/

❌ Eliminar un usuario/

👀 Información de un usuario/

✏ Editar un usuario/

➕ Crear un usuario

[POST] /v1/users

Cuerpo de la petición:

Campo 	Tipo 	Requerido 	Rango 	Descripción

fullname 	string 	true 	between_len: [1, 128] 	Nombre completo del usuario.

email 	string 	true 	between_len: [1, 128] 	Email del usuario.

username 	string 	true 	between_len: [1, 64] 	Apodo del usuario.

role_id 	string 	true 	exact_len: 36 	Identificador del rol del usuario (ver).

Ejemplo:

curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/users \
  -d '{
    "fullname": "Ricardo García Jiménez",
    "email": "ricardog08@riseup.net",
    "username": "ricardog08",
    "role_id": "3d2e95aa-0616-11f0-a401-142b9a82bd2f"
  }'

Respuesta de la petición:

{
  "data": {
    "id": "8a168aa8-02ae-4ccd-96a6-c9b5780a223e",
    "email": "ricardog08@riseup.net",
    "username": "ricardog08",
    "fullname": "Ricardo García Jiménez",
    "is_active": 1,
    "created_at": "2025-03-21 00:42:11",
    "updated_at": "2025-03-21 00:42:11",
    "role": {
      "id": "3d2e95aa-0616-11f0-a401-142b9a82bd2f",
      "name": "judge",
      "description": "Juez"
    }
  },
  "status": 200,
  "description": "Information about the user"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>❌ Eliminar un usuario</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear un usuario/

❌ Eliminar un usuario/

👀 Información de un usuario/

✏ Editar un usuario/

❌ Eliminar un usuario

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>🧑 Usuarios</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear un usuario/

❌ Eliminar un usuario/

👀 Información de un usuario/

✏ Editar un usuario/

🧑 Usuarios

Usuarios de acceso.

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>👀 Información de un usuario</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear un usuario/

❌ Eliminar un usuario/

👀 Información de un usuario/

✏ Editar un usuario/

👀 Información de un usuario

[GET] /v1/users/@id

Parámetros de la ruta:

Parámetros 	Tipo 	Requerido 	Descripción

id 	string 	true 	Identificador del usuario.

Ejemplo:

curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/users/@id

Respuesta de la petición:

{
  "data": {
    "id": "8a168aa8-02ae-4ccd-96a6-c9b5780a223e",
    "email": "ricardog08@riseup.net",
    "username": "ricardog08",
    "fullname": "Ricardo García Jiménez",
    "is_active": 1,
    "created_at": "2025-03-21 00:42:11",
    "updated_at": "2025-03-21 00:42:11",
    "role": {
      "id": "3d2e95aa-0616-11f0-a401-142b9a82bd2f",
      "name": "judge",
      "description": "Juez"
    }
  },
  "status": 200,
  "description": "Information about the user"
}

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
<!DOCTYPE html>

  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%2210 0 100 100%22><text y=%22.90em%22 font-size=%2290%22>📘</text></svg>">
  <title>✏ Editar un usuario</title>

  Inicio
Repositorio Contacto

📊 Análisis de datos/

🔐 Autenticación/

👥 Grupos/

👥 + 🎾 Grupos y partidos/

👥 + 🎾 + 👫 + 🏃♂ Grupos, partidos, parejas y jugadores/

👥 + 👫 Grupos y parejas/

🏷 / 🎾 Categorías de los partidos/

⏳ / 🎾 Estatus de los partidos/

🎾 Partidos/

🎾 + 👫 Partidos y parejas/

🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores/

👫 Parejas/

👫 + 🏃♂ Parejas y jugadores/

🏃♂ Jugadores/

🏷 / 📋  Categorías de inscripción/

🏷 / 🧑 Roles/

🏆 Acciones de las rondas/

🧑 Usuarios/

➕ Crear un usuario/

❌ Eliminar un usuario/

👀 Información de un usuario/

✏ Editar un usuario/

✏ Editar un usuario

Generated with swiki, a simple wiki generator written in POSIX sh.

© CC-BY-4.0


code:
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/versions

# testing
/coverage

# next.js
/.next/
/out/

# production
/build

# misc
.DS_Store
*.pem

# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

# env files (can opt-in for committing if needed)
.env*

# vercel
.vercel

# typescript
*.tsbuildinfo
next-env.d.ts


code:
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).

## Getting Started

First, run the development server:

```bash
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
```

Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.

You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.

This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.

## Learn More

To learn more about Next.js, take a look at the following resources:

- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.

You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!

## Deploy on Vercel

The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.

Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.


code:
import React from "react";
import {
  Breadcrumb,
  BreadcrumbItem,
  BreadcrumbLink,
  BreadcrumbList,
  BreadcrumbPage,
  BreadcrumbSeparator,
} from "@/app/components/ui/breadcrumb";

type BreadcrumbType = {
  label: string;
  href: string;
};

type AppBreadcrumbProps = {
  prevBreadcrumbs: BreadcrumbType[];
  currentPage: string;
};

export default function AppBreadcrumb({
  prevBreadcrumbs,
  currentPage,
}: AppBreadcrumbProps) {
  return (
    <div>
      <Breadcrumb>
        <BreadcrumbList>
          {prevBreadcrumbs.map((breadcrumb) => {
            return (
              <React.Fragment key={breadcrumb.href}>
                <BreadcrumbItem>
                  <BreadcrumbLink href={breadcrumb.href}>
                    {breadcrumb.label}
                  </BreadcrumbLink>
                </BreadcrumbItem>
                <BreadcrumbSeparator>/</BreadcrumbSeparator>
              </React.Fragment>
            );
          })}
          <BreadcrumbItem>
            <BreadcrumbPage>{currentPage}</BreadcrumbPage>
          </BreadcrumbItem>
        </BreadcrumbList>
      </Breadcrumb>
    </div>
  );
}


code:
import {
  Sidebar,
  SidebarContent,
  SidebarGroup,
  SidebarGroupContent,
  SidebarGroupLabel,
  SidebarMenu,
  SidebarMenuItem,
  SidebarMenuButton,
  SidebarHeader,
  SidebarFooter,
} from "@/app/components/ui/sidebar";
import {
  Home,
  ClipboardPen,
  UsersRound,
  Boxes,
  Group,
  LogOut,
  CircleUser,
} from "lucide-react";
import { logOut } from "@/app/lib/actions";

// Menu items.
const items = [
  {
    title: "Home",
    url: "/dashboard",
    icon: Home,
  },
  {
    title: "Inscripción",
    url: "/dashboard/inscripcion",
    icon: ClipboardPen,
  },
  {
    title: "Jugadores",
    url: "/dashboard/jugadores",
    icon: CircleUser,
  },
  {
    title: "Parejas",
    url: "/dashboard/parejas",
    icon: UsersRound,
  },
  {
    title: "Grupos",
    url: "/dashboard/grupos",
    icon: Boxes,
  },
  {
    title: "Partidos",
    url: "/dashboard/partidos",
    icon: Group,
  },
];

export default function AppSideNav() {
  return (
    <Sidebar>
      {/* Header */}
      <SidebarHeader>
        <SidebarGroupLabel>Dashboard - TDLF2025</SidebarGroupLabel>
      </SidebarHeader>
      {/* Content */}
      <SidebarContent>
        <SidebarGroup>
          <SidebarGroupContent>
            <SidebarMenu>
              {items.map((item) => (
                <SidebarMenuItem key={item.title}>
                  <SidebarMenuButton asChild>

                      <item.icon />
                      {item.title}

                  </SidebarMenuButton>
                </SidebarMenuItem>
              ))}
            </SidebarMenu>
          </SidebarGroupContent>
        </SidebarGroup>
      </SidebarContent>
      {/* Footer */}
      <SidebarFooter>
        <form action={logOut}>
          <SidebarMenuButton className="flex justify-end cursor-pointer">
            <LogOut />
            Sign Out
          </SidebarMenuButton>
        </form>
      </SidebarFooter>
    </Sidebar>
  );
}


code:
"use client";
import { getPlotlyLayoutChart } from "@/app/lib/utils";
import { useEffect, useRef } from "react";
import type { PlotData, Layout } from "plotly.js";

// type DataChart = {
//   marker: {
//     color: string;
//     cornerradius?: number;
//   };
//   text: number[];
//   x: string[];
//   y: number[];
//   type: PlotlyTraceType;
//   textposition?: string;
// };

type BarChartProps = {
  dataChart: PlotData[];
  titleChart: string;
  xAxisTitle: string;
  yAxisTitle: string;
  children: React.ReactNode;
};

export default function BarChart({
  dataChart,
  titleChart,
  xAxisTitle,
  yAxisTitle,
  children,
}: BarChartProps) {
  const chartRef = useRef(null);

  useEffect(() => {
    async function renderPlot() {
      if (chartRef.current) {
        const layout: Partial<Layout> = getPlotlyLayoutChart({
          xAxisTitle,
          yAxisTitle,
        });
        const config = {
          responsive: true,
          transition: { duration: 500, easing: "cubic-in-out" },
        };

        const Plotly = (await import("plotly.js-dist-min")).default;
        Plotly.newPlot(chartRef.current, dataChart, layout, config);
      }
    }

    renderPlot();
  }, [dataChart, titleChart, xAxisTitle, yAxisTitle]);

  return (

        {titleChart}

      {children}

svg:w-ful]">

  );
}


code:
import { PlusIcon } from "lucide-react";
import Link from "next/link";

export function ButtonCreatePair() {
  return (
    <Link
      href="/dashboard/parejas/crear"
      className="px-4 py-3 flex items-center rounded-lg text-sm font-medium transition-colors hover:bg-dark/40 border border-gray-800"
    >
      Agregar Pareja{" "}
      <PlusIcon className="h-5 md:ml-4" />
    </Link>
  );
}

// export function UpdateInvoice({ id }: { id: string }) {
//   return (
//     <Link
//       href={`/dashboard/invoices/${id}/edit`}
//       className="rounded-md border p- hover:bg-gray-00"
//     >
//       <PencilIcon className="w-5" />
//     </Link>
//   );
// }

// export function DeleteInvoice({ id }: { id: string }) {
//   const deleteInvoiceWithId = deleteInvoice.bind(null, id);

//   return (
//     <form action={deleteInvoiceWithId}>
//       <button type="submit" className="rounded-md border p- hover:bg-gray-00">
//         Delete
//         <TrashIcon className="w-5" />
//       </button>
//     </form>
//   );
// }


code:
import { auth } from "@/auth";
import { fetchCardsData } from "@/app/lib/data";

export default async function CardsDashboard() {
  const session = await auth();
  if (!session?.user || !session?.user?.apiKey) {
    throw new Error("No autorizado");
  }
  const apiKey = session.user.apiKey;
  const {
    numberOfPlayers,
    numberOfPairs,
    numberOfPairsOpen,
    numberOfPairsSenior,
  } = await fetchCardsData(apiKey);
  return (
    <>
      <Card title="Categorias del torneo" value={2} />
      <Card title="Jugadores inscritos" value={numberOfPlayers} />
      <Card title="Parejas inscritas" value={numberOfPairs} />
      <Card title="Jugadores categoria Libre" value={numberOfPairsOpen * 2} />
      <Card
        title="Jugadores categoria 50 y más"
        value={numberOfPairsSenior * 2}
      />
      <Card title="Parejas categoria Libre" value={numberOfPairsOpen} />
      <Card title="Parejas categoria 50 y más" value={numberOfPairsSenior} />
      {/* <Card title="Grupos categoria libre" value={4} /> */}
      {/* <Card title="Grupos categoria 50 y más" value={4} /> */}
    </>
  );
}

export function Card({
  title,
  value,
}: {
  title: string;
  value: number | string;
}) {
  return (

        {/* {Icon ? <Icon className="h-5 w-5 text-gray-700" /> : null} */}

{title}

      <p className={`truncate rounded-xl px-4 py-8 text-center text-3xl`}>
        {value}

  );
}


code:
import { fetchCardsData, getApiKey } from "@/app/lib/data";
const GROUPS_OPEN = 8;
const MATCHESPERGROUP = 6;
const GROUPS_SENIOR = 4;

export default async function CardsStats() {
  const apiKey = await getApiKey();
  const {
    numberOfPlayers,
    numberOfPairs,
    numberOfPairsOpen,
    numberOfPairsSenior,
  } = await fetchCardsData(apiKey);

  const matchesOpen = MATCHESPERGROUP * GROUPS_OPEN + 16 + 8 + 4 + 3;
  const matchesSenior = MATCHESPERGROUP * GROUPS_SENIOR + 8 + 4 + 3;
  return (
    <>

        <Card title="Categorias del torneo" value={2} />
        <Card title="Jugadores inscritos" value={numberOfPlayers} />
        <Card title="Parejas inscritas" value={numberOfPairs} />
        <Card title="Partidos jugados" value={matchesOpen + matchesSenior} />

          Categoria 50 y más

        <Card
          title="Jugadores categoria 50 y más"
          value={numberOfPairsSenior * 2}
        />
        <Card title="Parejas categoria 50 y más" value={numberOfPairsSenior} />
        <Card
          title="Partidos jugados categoria 50 y más"
          value={matchesSenior}
        />

          Categoria Libre

        <Card title="Jugadores categoria Libre" value={numberOfPairsOpen * 2} />
        <Card title="Parejas categoria Libre" value={numberOfPairsOpen} />
        <Card title="Partidos jugados categoria Libre" value={matchesOpen} />

    </>
  );
}

export function Card({
  title,
  value,
}: {
  title: string;
  value: number | string;
}) {
  return (

        {/* {Icon ? <Icon className="h-5 w-5 text-gray-700" /> : null} */}

{title}

      <p
        className={`truncate rounded-xl px-4 py-8 text-center text-2xl xs:text-3xl`}
      >

          {value}

  );
}


code:
import { useState } from "react";
import { Controller, Control } from "react-hook-form";
import { cn } from "@/app/lib/utils";
import { Check, ChevronsUpDown } from "lucide-react";
import type { Player } from "@/app/lib/definitions";
import {
  Popover,
  PopoverTrigger,
  PopoverContent,
} from "@/app/components/ui/popover";
import { Button } from "@/app/components/ui/button";
import {
  Command,
  CommandEmpty,
  CommandGroup,
  CommandInput,
  CommandItem,
  CommandList,
} from "@/app/components/ui/command";
import {
  FormControl,
  FormItem,
  FormLabel,
  FormMessage,
} from "@/app/components/ui/form";

type ComboBoxProps = {
  labelField: string;
  name: string;
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  control: Control<any>; // Correctly typed control prop
  suggestions: Player[]; // Suggestions passed as an array
};

export default function ComboBox({
  labelField,
  name,
  control,
  suggestions = [],
}: ComboBoxProps) {
  const [open, setOpen] = useState(false);

  return (
    <Controller
      name={name}
      control={control}
      render={({ field }) => (
        <FormItem className="flex flex-col">
          <FormLabel>{labelField}</FormLabel>
          <Popover open={open} onOpenChange={setOpen}>
            <PopoverTrigger asChild>
              <FormControl>
                <Button
                  variant="outline"
                  role="combobox"
                  aria-expanded={open}
                  className={cn(
                    "w-full justify-between",
                    !field.value && "text-muted-foreground"
                  )}
                >
                  {field.value
                    ? suggestions.find(
                        (suggestion) => suggestion.id === field.value
                      )?.fullname
                    : "Selecciona uno"}
                  <ChevronsUpDown className="opacity-50" />
                </Button>
              </FormControl>
            </PopoverTrigger>
            <PopoverContent className="p-0">
              <Command>
                <CommandInput placeholder="Buscar..." className="h-9" />
                <CommandList>
                  <CommandEmpty>Sin sugerencias.</CommandEmpty>
                  <CommandGroup>
                    {suggestions.map((suggestion) => (
                      <CommandItem
                        value={suggestion.fullname}
                        key={`${name}-${suggestion.id}`}
                        onSelect={() => {
                          field.onChange(suggestion.id);
                          setOpen(false);
                        }}
                      >
                        {suggestion.fullname}
                        <Check
                          className={cn(
                            "ml-auto",
                            suggestion.id === field.value
                              ? "opacity-100"
                              : "opacity-0"
                          )}
                        />
                      </CommandItem>
                    ))}
                  </CommandGroup>
                </CommandList>
              </Command>
            </PopoverContent>
          </Popover>
          <FormMessage />
        </FormItem>
      )}
    />
  );
}