code:
# 👫 + 🏃♂ Parejas y jugadores de un grupo

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

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del grupo. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": [
    {
      "pair": {
        "id": "e1543be4-b9b0-415a-a9d7-cef3455b13c5",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-17 14:34:44",
        "updated_at": "2025-03-17 14:34:44",
        "registration_category": {
          "id": "c98fb1f7-837b-4301-947f-8367f6fb29b8",
          "name": "open",
          "description": "Libre"
        },
        "players": [
          {
            "player": {
              "id": "530a7061-2cf1-483d-8e06-7b5b87e3faf6",
              "fullname": "Lourdes Herrera",
              "city": "Apaseo el Alto",
              "weight": "62.50",
              "height": "1.67",
              "age": 25,
              "experience": 7,
              "is_active": 1,
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            },
            "relationship": {
              "id": "16d46f1e-1a39-4309-9fd3-632eb5c8c55d",
              "player_id": "530a7061-2cf1-483d-8e06-7b5b87e3faf6",
              "pair_id": "e1543be4-b9b0-415a-a9d7-cef3455b13c5",
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            }
          },
          {
            "player": {
              "id": "7da5a922-4964-49b8-9cc7-7290ad2f1495",
              "fullname": "Enrique Castro",
              "city": "Juventino Rosas",
              "weight": "75.00",
              "height": "1.79",
              "age": 28,
              "experience": 12,
              "is_active": 1,
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            },
            "relationship": {
              "id": "8f19088e-2629-4b2e-bf02-a7bcf4550f9b",
              "player_id": "7da5a922-4964-49b8-9cc7-7290ad2f1495",
              "pair_id": "e1543be4-b9b0-415a-a9d7-cef3455b13c5",
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            }
          }
        ]
      },
      "relationship": {
        "id": "2d57999d-111c-49a8-bdc8-215805e0b99e",
        "pair_id": "e1543be4-b9b0-415a-a9d7-cef3455b13c5",
        "group_id": "3a8b9ca2-09e6-47b8-8c8b-edbf506bd8fe",
        "created_at": "2025-03-17 16:07:14",
        "updated_at": "2025-03-17 16:07:14"
      }
    },
    {
      "pair": {
        "id": "87dbb871-fa5f-4698-bfad-d6ae6beb0e7a",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-17 14:34:44",
        "updated_at": "2025-03-17 14:34:44",
        "registration_category": {
          "id": "c98fb1f7-837b-4301-947f-8367f6fb29b8",
          "name": "open",
          "description": "Libre"
        },
        "players": [
          {
            "player": {
              "id": "dbe3d8f9-6985-4cac-a2ab-f442f60ab822",
              "fullname": "Karla Rivas",
              "city": "Victoria",
              "weight": "63.00",
              "height": "1.68",
              "age": 27,
              "experience": 7,
              "is_active": 1,
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            },
            "relationship": {
              "id": "1c3c812e-224e-45eb-9f90-9c3c0cc8fea1",
              "player_id": "dbe3d8f9-6985-4cac-a2ab-f442f60ab822",
              "pair_id": "87dbb871-fa5f-4698-bfad-d6ae6beb0e7a",
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            }
          },
          {
            "player": {
              "id": "f2f293f2-09c8-413e-9fbf-2bfe311b38e0",
              "fullname": "Ricardo Silva",
              "city": "Doctor Mora",
              "weight": "74.50",
              "height": "1.80",
              "age": 32,
              "experience": 12,
              "is_active": 1,
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            },
            "relationship": {
              "id": "97d4b22f-708d-4819-8fa1-2b7bfc2d7f1b",
              "player_id": "f2f293f2-09c8-413e-9fbf-2bfe311b38e0",
              "pair_id": "87dbb871-fa5f-4698-bfad-d6ae6beb0e7a",
              "created_at": "2025-03-17 14:34:44",
              "updated_at": "2025-03-17 14:34:44"
            }
          }
        ]
      },
      "relationship": {
        "id": "6f60337a-8b09-4878-be55-3ffec0412cef",
        "pair_id": "87dbb871-fa5f-4698-bfad-d6ae6beb0e7a",
        "group_id": "3a8b9ca2-09e6-47b8-8c8b-edbf506bd8fe",
        "created_at": "2025-03-17 16:07:14",
        "updated_at": "2025-03-17 16:07:14"
      }
    },
    ...
  ],
  "status": 200,
  "description": "Information about the group pairs with players"
}
```


code:
# 👀 Parejas de un grupo

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

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del grupo. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": [
    {
      "pair": {
        "id": "5dfbfd5c-26e2-4dbe-8bd6-1040a6cf1e10",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-17 23:51:47",
        "updated_at": "2025-03-17 23:51:47",
        "registration_category": {
          "id": "4291ffa3-0b5c-4c3c-bd29-31cfddb130be",
          "name": "open",
          "description": "Libre"
        }
      },
      "relationship": {
        "id": "48142ac1-f2da-485e-af15-1fcd386b34d6",
        "pair_id": "5dfbfd5c-26e2-4dbe-8bd6-1040a6cf1e10",
        "group_id": "19dcf711-ac20-4be5-8bc9-daa27582c6c2",
        "created_at": "2025-03-18 01:21:28",
        "updated_at": "2025-03-18 01:21:28"
      }
    },
    {
      "pair": {
        "id": "6b8689f2-d90b-44f5-b5c2-1caa9bccc71e",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-17 23:51:48",
        "updated_at": "2025-03-17 23:51:48",
        "registration_category": {
          "id": "4291ffa3-0b5c-4c3c-bd29-31cfddb130be",
          "name": "open",
          "description": "Libre"
        }
      },
      "relationship": {
        "id": "4f3c6b42-9a1e-4ab5-9fcd-a42691388086",
        "pair_id": "6b8689f2-d90b-44f5-b5c2-1caa9bccc71e",
        "group_id": "19dcf711-ac20-4be5-8bc9-daa27582c6c2",
        "created_at": "2025-03-18 01:21:28",
        "updated_at": "2025-03-18 01:21:28"
      }
    },
    ...
  ],
  "status": 200,
  "description": "Information about the group pairs"
}
```

license: mit


code:
# 👥 Grupos

Grupos generados.

```
[GET] /v1/groups
```

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 grupos. |
| `filterBy` | `string` | `contains: [name, description]` | `name` | Campo de búsqueda de los grupos. |
| `orderBy` | `string` | `contains: [name, description, created_at, updated_at]` | `name` | Campo de ordenamiento de los grupos. |
| `sortBy` | `string` | `contains: [asc, desc]` | `asc` | Modo de ordenamiento de los grupos. |
| `registration_category_id` | `string` | `exact_len: 36` | `null` | Identificador de la categoría de inscripción de los grupos ([ver](../registration-categories/index.html)). |
| `is_eliminated` | `boolean` | `contains: [yes/no, on/off, 1/0, true/false]` | `null` | Filtrar los grupos por estatus de eliminación. |
| `is_active` | `boolean` | `contains: [yes/no, on/off, 1/0, true/false]` | `null` | Filtrar los grupos por estatus de actividad. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": [
    {
      "id": "55d0ace0-ecb9-4060-b294-d71a1c102c71",
      "name": "A_2025",
      "description": "A",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 01:59:29",
      "updated_at": "2025-03-18 01:59:29",
      "registration_category": {
        "id": "cba89529-0ba9-49e4-85ad-83e63c8e9d7e",
        "name": "seniors",
        "description": "50 y más"
      }
    },
    {
      "id": "b77966a1-42b4-478c-b145-4ff0e4a248ed",
      "name": "A_2025",
      "description": "A",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 01:59:28",
      "updated_at": "2025-03-18 01:59:28",
      "registration_category": {
        "id": "4291ffa3-0b5c-4c3c-bd29-31cfddb130be",
        "name": "open",
        "description": "Libre"
      }
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 8,
    "total": 2,
    "count": 10,
    "offset": 0
  },
  "description": "Information about all the groups with pagination"
}
```


code:
# 🏆 + 👫 Ranking de las parejas y jugadores de un grupo

```
[GET] /v1/groups/@id/ranking
```

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del grupo. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "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": "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 group ranking"
}
```


code:
# 👀 Información de un grupo

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

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del grupo. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": {
    "id": "b77966a1-42b4-478c-b145-4ff0e4a248ed",
    "name": "A_2025",
    "description": "A",
    "is_eliminated": 0,
    "is_active": 1,
    "created_at": "2025-03-18 01:59:28",
    "updated_at": "2025-03-18 01:59:28",
    "registration_category": {
      "id": "4291ffa3-0b5c-4c3c-bd29-31cfddb130be",
      "name": "open",
      "description": "Libre"
    }
  },
  "status": 200,
  "description": "Information about the group"
}
```


code:
# ✏ Editar un grupo

```
[PUT] /v1/groups/@id
```

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del grupo. |

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 del grupo. |
| `is_active` | `boolean` | `false` | `contains: [yes/no, on/off, 1/0, true/false]` | Estatus de actividad del grupo. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": {
    "id": "fb983148-d4f6-41c3-8fb5-bda2146f7fa6",
    "name": "A_2025",
    "description": "A",
    "is_eliminated": 1,
    "is_active": 0,
    "created_at": "2025-03-20 21:27:39",
    "updated_at": "2025-03-20 23:52:29",
    "registration_category": {
      "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
      "name": "open",
      "description": "Libre"
    }
  },
  "status": 200,
  "description": "The group was updated successfully"
}
```


code:
# 🍓 Documentación de la API

Documentación de la API RESTful del evento de frontenis *"Torneo de las Fresas Irapuato 2025"*.

## Respuestas

Cuerpo de la petición:

| Campo | Tipo | Descripción |
| ----- | ---- | ----------- |
| `data` | `object` `array[objects]` | Información o recursos de respuesta de la petición. |
| `status` | `integer` | Código HTTP de respuesta de la petición. |
| `description` | `string` | Descripción de la información o recursos de respuesta de la petición. |
| `pagination` | `object` | Información de la paginación de los recursos de la respuesta de la petición. |

Paginación:

| Campo | Tipo | Descripción |
| ----- | ---- | ----------- |
| `page` | `integer` | Número de la página actual de los resultados. |
| `limit` | `integer` | Número de resultados por página. |
| `total` | `integer` | Número total de páginas de los resultados. |
| `count` | `integer` | Número total de resultados. |
| `offset` | `integer` | Apuntador del resultado actual de la página. |

## Errores

Cuerpo de la petición:

| Campo | Tipo | Descripción |
| ----- | ---- | ----------- |
| `data` | `null` | Sin información o recursos de respuesta de la petición. |
| `status` | `integer` | Código HTTP de respuesta de la petición. |
| `validations` | `array[fields]` | Una lista de errores de validación de los campos del cuerpo de la petición. |
| `error` | `string` | Tipo de error de respuesta de la petición. |
| `description` | `string` | Descripción o motivo del error de respuesta de la petición. |


code:
# 🏷 / 🎾 Categorías de los partidos

Categorías de las rondas de los partidos.

```
[GET] /v1/categories/matches
```

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": [
    {
      "id": "6c7f2686-7b40-47ff-b5b5-cbd52c6cea89",
      "name": "qualifier",
      "description": "Clasificación",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "dc19c9bf-4339-4ed2-a603-5b2dd1058a6f",
      "name": "quarters",
      "description": "Cuartos de final",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "9efe8408-b826-4f15-a383-1f00d47118a8",
      "name": "final",
      "description": "Final",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "91ee11b0-dd16-40e5-b0a5-a6bb17c3938a",
      "name": "eighths",
      "description": "Octavos de final",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "8cded9b8-4e7f-4def-b6ef-bd954e13c0df",
      "name": "semifinal",
      "description": "Semifinal",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    }
  ],
  "status": 200,
  "description": "Information about all the matches categories"
}
```


code:
# 👀 Información de una categoría de partido

```
[GET] /v1/categories/matches/@id
```

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador de la categoría de partido. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": {
    "id": "6c7f2686-7b40-47ff-b5b5-cbd52c6cea89",
    "name": "qualifier",
    "description": "Clasificación",
    "created_at": "2025-03-18 14:29:06",
    "updated_at": "2025-03-18 14:29:06"
  },
  "status": 200,
  "description": "Information about the match category"
}
```


code:
# ⏳ / 🎾 Estatus de los partidos

Estatus de juego de los partidos.

```
[GET] /v1/status/matches
```

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": [
    {
      "id": "273f5349-c38c-4e71-acfe-757595aa78de",
      "name": "playing",
      "description": "En juego",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "85612c7a-9dba-492a-84d0-b8c2c1fff166",
      "name": "finalized",
      "description": "Finalizado",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    },
    {
      "id": "29d4b630-468f-4dcc-b775-5bad0b796a89",
      "name": "scheduled",
      "description": "Programado",
      "created_at": "2025-03-18 14:29:06",
      "updated_at": "2025-03-18 14:29:06"
    }
  ],
  "status": 200,
  "description": "Information about all the matches status"
}
```


code:
# 👀 Información de un estatus de partido

```
[GET] /v1/status/matches/@id
```

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del estatus de partido. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": {
    "id": "273f5349-c38c-4e71-acfe-757595aa78de",
    "name": "playing",
    "description": "En juego",
    "created_at": "2025-03-18 14:29:06",
    "updated_at": "2025-03-18 14:29:06"
  },
  "status": 200,
  "description": "Information about the match status"
}
```


code:
# 🎾 + 👫 + 🏃♂ Partidos, parejas y jugadores

Parejas y jugadores de los partidos.

```
[GET] /v1/matches/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 los partidos con sus parejas y jugadores. |
| `orderBy` | `string` | `contains: [created_at, updated_at]` | `created_at` | Campo de ordenamiento de los partidos con sus parejas y jugadores. |
| `sortBy` | `string` | `contains: [asc, desc]` | `desc` | Modo de ordenamiento de los partidos con sus parejas y jugadores. |
| `registration_category_id` | `string` | `exact_len: 36` | `null` | Identificador de la categoría de inscripción de los partidos con sus parejas y jugadores ([ver](../registration-categories/index.html)). |
| `match_category_id` | `string` | `exact_len: 36` | `null` | Identificador de la categoría de las rondas de los partidos con sus parejas y jugadores ([ver](../match-categories/index.html)). |
| `match_status_id` | `string` | `exact_len: 36` | `null` | Identificador del estatus de juego de los partidos con sus parejas y jugadores ([ver](../match-status/index.html)). |
| `is_active` | `boolean` | `contains: [yes/no, on/off, 1/0, true/false]` | `null` | Filtrar los partidos con sus parejas y jugadores por estatus de actividad. |

Ejemplo:

```bash
curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches/pairs/players?page=2&orderBy=created_at&sortBy=desc&registration_category_id=76d95a95-0fa3-4d58-a8ce-031a1db25b3c&match_category_id=6c7f2686-7b40-47ff-b5b5-cbd52c6cea89&match_status_id=29d4b630-468f-4dcc-b775-5bad0b796a89&is_active=true
```

Respuesta de la petición:

```json
{
  "data": [
    {
      "match": {
        "id": "59caca3c-e589-4b16-a2f9-6baad0f60da3",
        "is_active": 1,
        "created_at": "2025-03-22 03:21:42",
        "updated_at": "2025-03-22 03:21:42",
        "registration_category": {
          "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
          "name": "open",
          "description": "Libre"
        },
        "match_category": {
          "id": "ad14f6d0-5296-4a6e-a986-6a99a20365b7",
          "name": "qualifier",
          "description": "Clasificación"
        },
        "match_status": {
          "id": "b06b08ff-0f65-456c-ae90-3dd740a26c9b",
          "name": "scheduled",
          "description": "Programado"
        }
      },
      "pairs": [
        {
          "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"
                }
              }
            ]
          },
          "relationship": {
            "id": "1c6a2058-1c49-48dd-9555-e7c493e6e9df",
            "pair_id": "3f71b2f1-906c-4419-b464-666ec27ac98c",
            "match_id": "59caca3c-e589-4b16-a2f9-6baad0f60da3",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-22 03:21:42",
            "updated_at": "2025-03-22 03:21:42"
          }
        },
        {
          "pair": {
            "id": "57f1a4fc-e84b-44e1-81ea-9a960cb076f2",
            "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": "0dd9bfe6-37e8-462b-98e9-00998f179950",
                  "fullname": "Mario Guzmán",
                  "city": "Salvatierra",
                  "weight": "79.20",
                  "height": "1.81",
                  "age": 34,
                  "experience": 15,
                  "is_active": 1,
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                },
                "relationship": {
                  "id": "47b77c4c-b7aa-43c9-aa8e-07ec144b0342",
                  "player_id": "0dd9bfe6-37e8-462b-98e9-00998f179950",
                  "pair_id": "57f1a4fc-e84b-44e1-81ea-9a960cb076f2",
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                }
              },
              {
                "player": {
                  "id": "7aa7a788-2105-49c9-8ec5-39947fd96fa6",
                  "fullname": "Sandra Paredes",
                  "city": "Jaral del Progreso",
                  "weight": "64.80",
                  "height": "1.68",
                  "age": 27,
                  "experience": 9,
                  "is_active": 1,
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                },
                "relationship": {
                  "id": "6113b73a-0a60-4fcc-8700-c559e84ad09b",
                  "player_id": "7aa7a788-2105-49c9-8ec5-39947fd96fa6",
                  "pair_id": "57f1a4fc-e84b-44e1-81ea-9a960cb076f2",
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                }
              }
            ]
          },
          "relationship": {
            "id": "b69c8053-4e68-447c-919a-57a3e28fd3ab",
            "pair_id": "57f1a4fc-e84b-44e1-81ea-9a960cb076f2",
            "match_id": "59caca3c-e589-4b16-a2f9-6baad0f60da3",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-22 03:21:42",
            "updated_at": "2025-03-22 03:21:42"
          }
        }
      ]
    },
    {
      "match": {
        "id": "69939649-23f6-4e8f-9cf3-4329cbeea1fe",
        "is_active": 1,
        "created_at": "2025-03-22 03:21:42",
        "updated_at": "2025-03-22 03:21:42",
        "registration_category": {
          "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
          "name": "open",
          "description": "Libre"
        },
        "match_category": {
          "id": "ad14f6d0-5296-4a6e-a986-6a99a20365b7",
          "name": "qualifier",
          "description": "Clasificación"
        },
        "match_status": {
          "id": "b06b08ff-0f65-456c-ae90-3dd740a26c9b",
          "name": "scheduled",
          "description": "Programado"
        }
      },
      "pairs": [
        {
          "pair": {
            "id": "e4c8b51b-a393-413d-913e-59d42748eb94",
            "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": "7c6982bf-5240-45e4-bded-4179aa189be6",
                  "fullname": "Fernando Guerra",
                  "city": "Villagrán",
                  "weight": "73.00",
                  "height": "1.77",
                  "age": 30,
                  "experience": 9,
                  "is_active": 1,
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                },
                "relationship": {
                  "id": "23a8cddb-65bc-4d30-b5b8-325300033bbf",
                  "player_id": "7c6982bf-5240-45e4-bded-4179aa189be6",
                  "pair_id": "e4c8b51b-a393-413d-913e-59d42748eb94",
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                }
              },
              {
                "player": {
                  "id": "f1bf3056-1b0d-4317-b493-d4710ab8f1d9",
                  "fullname": "Isabel Pérez",
                  "city": "Abasolo",
                  "weight": "60.00",
                  "height": "1.65",
                  "age": 26,
                  "experience": 6,
                  "is_active": 1,
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                },
                "relationship": {
                  "id": "c127db62-c0fb-47f5-ae5b-708e5d716913",
                  "player_id": "f1bf3056-1b0d-4317-b493-d4710ab8f1d9",
                  "pair_id": "e4c8b51b-a393-413d-913e-59d42748eb94",
                  "created_at": "2025-03-22 03:13:32",
                  "updated_at": "2025-03-22 03:13:32"
                }
              }
            ]
          },
          "relationship": {
            "id": "47d71212-0a0b-40a6-9484-a65d827055df",
            "pair_id": "e4c8b51b-a393-413d-913e-59d42748eb94",
            "match_id": "69939649-23f6-4e8f-9cf3-4329cbeea1fe",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-22 03:21:42",
            "updated_at": "2025-03-22 03:21:42"
          }
        },
        {
          "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"
                }
              }
            ]
          },
          "relationship": {
            "id": "5436ad10-b464-49cb-9b84-509f0a11123d",
            "pair_id": "3f71b2f1-906c-4419-b464-666ec27ac98c",
            "match_id": "69939649-23f6-4e8f-9cf3-4329cbeea1fe",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-22 03:21:42",
            "updated_at": "2025-03-22 03:21:42"
          }
        }
      ]
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 24,
    "total": 3,
    "count": 54,
    "offset": 0
  },
  "description": "Information about the matches pairs and players with pagination"
}
```


code:
# 👀 Parejas y jugadores de un partido

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

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del partido. |

Ejemplo:

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

Respuesta de la petición:

```json
{
  "data": [
    {
      "pair": {
        "id": "46197c3b-aa33-4f59-b194-4f3ce08f83c5",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-18 14:40:07",
        "updated_at": "2025-03-18 14:40:07",
        "registration_category": {
          "id": "eb69a503-6eb3-4f20-b30b-c9a4762a8cfd",
          "name": "seniors",
          "description": "50 y más"
        },
        "players": [
          {
            "player": {
              "id": "5416802e-b3c6-480d-951f-9d9eb73daec6",
              "fullname": "Jorge Hernández",
              "city": "Celaya",
              "weight": "80.00",
              "height": "1.75",
              "age": 58,
              "experience": 28,
              "is_active": 1,
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            },
            "relationship": {
              "id": "0e889e98-50db-40a0-85ea-810e2919289c",
              "player_id": "5416802e-b3c6-480d-951f-9d9eb73daec6",
              "pair_id": "46197c3b-aa33-4f59-b194-4f3ce08f83c5",
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            }
          },
          {
            "player": {
              "id": "48bf2fee-eb86-4470-8989-d53629c70b4a",
              "fullname": "María Guzmán",
              "city": "Irapuato",
              "weight": "67.50",
              "height": "1.62",
              "age": 52,
              "experience": 22,
              "is_active": 1,
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            },
            "relationship": {
              "id": "4facf2f7-a2af-4935-ad35-be9d9db6d04a",
              "player_id": "48bf2fee-eb86-4470-8989-d53629c70b4a",
              "pair_id": "46197c3b-aa33-4f59-b194-4f3ce08f83c5",
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            }
          }
        ]
      },
      "relationship": {
        "id": "06928e67-a024-427c-ae4f-2dd940949aa3",
        "pair_id": "46197c3b-aa33-4f59-b194-4f3ce08f83c5",
        "match_id": "218574e0-759c-4d01-be9a-0e83d6dd2365",
        "score": 0,
        "is_winner": 0,
        "created_at": "2025-03-18 14:41:31",
        "updated_at": "2025-03-18 14:41:31"
      }
    },
    {
      "pair": {
        "id": "2a7b7e6d-23fc-4aa6-b6e1-1289afc97625",
        "is_eliminated": 0,
        "is_active": 1,
        "created_at": "2025-03-18 14:40:07",
        "updated_at": "2025-03-18 14:40:07",
        "registration_category": {
          "id": "eb69a503-6eb3-4f20-b30b-c9a4762a8cfd",
          "name": "seniors",
          "description": "50 y más"
        },
        "players": [
          {
            "player": {
              "id": "ca171e4e-d7be-4b15-9f91-bffc13130b3c",
              "fullname": "Patricia Navarro",
              "city": "Santa Cruz de Juventino Rosas",
              "weight": "66.50",
              "height": "1.64",
              "age": 57,
              "experience": 27,
              "is_active": 1,
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            },
            "relationship": {
              "id": "44c430fc-c51f-4076-a25c-a22a5431cb30",
              "player_id": "ca171e4e-d7be-4b15-9f91-bffc13130b3c",
              "pair_id": "2a7b7e6d-23fc-4aa6-b6e1-1289afc97625",
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            }
          },
          {
            "player": {
              "id": "a0a86ffb-c3cc-492e-9163-bdb6be3c2084",
              "fullname": "Héctor Márquez",
              "city": "Pueblo Nuevo",
              "weight": "79.20",
              "height": "1.75",
              "age": 61,
              "experience": 31,
              "is_active": 1,
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            },
            "relationship": {
              "id": "e7814a46-5b3f-48b4-9030-1f4b75af9244",
              "player_id": "a0a86ffb-c3cc-492e-9163-bdb6be3c2084",
              "pair_id": "2a7b7e6d-23fc-4aa6-b6e1-1289afc97625",
              "created_at": "2025-03-18 14:40:07",
              "updated_at": "2025-03-18 14:40:07"
            }
          }
        ]
      },
      "relationship": {
        "id": "0d620997-636a-477c-a666-42e20d36d249",
        "pair_id": "2a7b7e6d-23fc-4aa6-b6e1-1289afc97625",
        "match_id": "218574e0-759c-4d01-be9a-0e83d6dd2365",
        "score": 0,
        "is_winner": 0,
        "created_at": "2025-03-18 14:41:31",
        "updated_at": "2025-03-18 14:41:31"
      }
    }
  ],
  "status": 200,
  "description": "Information about the match pairs with players"
}
```


code:
# 🎾 + 👫 Partidos y parejas

Parejas de los partidos.

```
[GET] /v1/matches/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 los partidos con sus parejas. |
| `orderBy` | `string` | `contains: [created_at, updated_at]` | `created_at` | Campo de ordenamiento de los partidos con sus parejas. |
| `sortBy` | `string` | `contains: [asc, desc]` | `desc` | Modo de ordenamiento de los partidos con sus parejas. |
| `registration_category_id` | `string` | `exact_len: 36` | `null` | Identificador de la categoría de inscripción de los partidos con sus parejas ([ver](../registration-categories/index.html)). |
| `match_category_id` | `string` | `exact_len: 36` | `null` | Identificador de la categoría de las rondas de los partidos con sus parejas ([ver](../match-categories/index.html)). |
| `match_status_id` | `string` | `exact_len: 36` | `null` | Identificador del estatus de juego de los partidos con sus parejas ([ver](../match-status/index.html)). |
| `is_active` | `boolean` | `contains: [yes/no, on/off, 1/0, true/false]` | `null` | Filtrar los partidos con sus parejas por estatus de actividad. |

Ejemplo:

```bash
curl -X GET \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches/pairs?page=2&orderBy=created_at&sortBy=desc&registration_category_id=76d95a95-0fa3-4d58-a8ce-031a1db25b3c&match_category_id=6c7f2686-7b40-47ff-b5b5-cbd52c6cea89&match_status_id=29d4b630-468f-4dcc-b775-5bad0b796a89&is_active=true
```

Respuesta de la petición:

```json
{
  "data": [
    {
      "match": {
        "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"
        }
      },
      "pairs": [
        {
          "pair": {
            "id": "9d837f1b-c2c9-4ea2-ab19-a74d07c64c19",
            "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"
            }
          },
          "relationship": {
            "id": "2a043227-b9ae-456d-bbe8-dbed88588985",
            "pair_id": "9d837f1b-c2c9-4ea2-ab19-a74d07c64c19",
            "match_id": "fd73aa9c-fac8-4761-a6ba-12c674612929",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-18 14:41:31",
            "updated_at": "2025-03-18 14:41:31"
          }
        },
        {
          "pair": {
            "id": "f7d06b6e-84a5-4fe3-a36f-c4f391276c8d",
            "is_eliminated": 0,
            "is_active": 1,
            "created_at": "2025-03-18 14:37:31",
            "updated_at": "2025-03-18 14:37:31",
            "registration_category": {
              "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
              "name": "open",
              "description": "Libre"
            }
          },
          "relationship": {
            "id": "2ebac074-ec48-482a-b07c-ebc1b0e741e7",
            "pair_id": "f7d06b6e-84a5-4fe3-a36f-c4f391276c8d",
            "match_id": "fd73aa9c-fac8-4761-a6ba-12c674612929",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-18 14:41:31",
            "updated_at": "2025-03-18 14:41:31"
          }
        }
      ]
    },
    {
      "match": {
        "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"
        }
      },
      "pairs": [
        {
          "pair": {
            "id": "9d837f1b-c2c9-4ea2-ab19-a74d07c64c19",
            "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"
            }
          },
          "relationship": {
            "id": "29cf5e94-8743-427f-b0b7-cd40ab82c419",
            "pair_id": "9d837f1b-c2c9-4ea2-ab19-a74d07c64c19",
            "match_id": "097c1b44-1bed-40fe-b522-ced60e91c185",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-18 14:41:31",
            "updated_at": "2025-03-18 14:41:31"
          }
        },
        {
          "pair": {
            "id": "66dbc3f9-f07d-41f7-bd76-f2004599e4ed",
            "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"
            }
          },
          "relationship": {
            "id": "cd2471d4-d577-4779-9587-ef27a170f673",
            "pair_id": "66dbc3f9-f07d-41f7-bd76-f2004599e4ed",
            "match_id": "097c1b44-1bed-40fe-b522-ced60e91c185",
            "score": 0,
            "is_winner": 0,
            "created_at": "2025-03-18 14:41:31",
            "updated_at": "2025-03-18 14:41:31"
          }
        }
      ]
    },
    ...
  ],
  "status": 200,
  "pagination": {
    "page": 1,
    "limit": 8,
    "total": 6,
    "count": 48,
    "offset": 0
  },
  "description": "Information about the matches pairs with pagination"
}
```


code:
# ✏ Editar la pareja de un partido

```
[PUT] /v1/matches/@matchId/pairs/@pairId
```

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `matchId` | `string` | `true` | Identificador del partido. |
| `pairId` | `string` | `true` | Identificador de la pareja. |

Cuerpo de la petición:

| Campo | Tipo | Requerido | Rango | Descripción |
| ----- | ---- | --------- | ----- | ----------- |
| `score` | `integer` | `false` | `between_numeric: [0, 255]` | Puntaje de la pareja en el partido. |
| `is_winner` | `boolean` | `false` | `contains: [yes/no, on/off, 1/0, true/false]` | Estatus de ganador de la pareja en el partido. |

Ejemplo:

```bash
curl -X PUT \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches/@matchId/pairs/@pairId \
  -d '{
    "score": "10",
    "is_winner": "1"
  }'
```

Respuesta de la petición:

```json
{
  "data": {
    "match": {
      "id": "27113a35-baed-40b2-9af9-e0c261582b6a",
      "is_active": 1,
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-20 14:17:04",
      "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"
      }
    },
    "pair": {
      "id": "75de4f9a-726d-4eda-83aa-c42aa579691f",
      "is_eliminated": 0,
      "is_active": 1,
      "created_at": "2025-03-18 14:37:31",
      "updated_at": "2025-03-18 14:37:31",
      "registration_category": {
        "id": "76d95a95-0fa3-4d58-a8ce-031a1db25b3c",
        "name": "open",
        "description": "Libre"
      }
    },
    "relationship": {
      "id": "d54b558b-65b4-4e89-b463-7390ed90387f",
      "pair_id": "75de4f9a-726d-4eda-83aa-c42aa579691f",
      "match_id": "27113a35-baed-40b2-9af9-e0c261582b6a",
      "score": 10,
      "is_winner": 1,
      "created_at": "2025-03-18 14:41:31",
      "updated_at": "2025-03-20 16:48:33"
    }
  },
  "status": 200,
  "description": "The match pair was updated successfully"
}
```


code:
# ➕ Crear un partido

```
[POST] /v1/matches
```

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 del partido ([ver](../registration-categories/index.html)). |
| `match_category_id` | `string` | `true` | `exact_len: 36` | Identificador de la categoría de la ronda del partido ([ver](../match-categories/index.html)). |
| `match_status_id` | `string` | `true` | `exact_len: 36` | Identificador del estatus de juego del partido ([ver](../match-status/index.html)). |
| `pairs` | `array[pairs]` | `true` | `array_size_equal: 2` | Una lista con los identificadores de las parejas del partido ([ver](../pairs/index.html)). |

Ejemplo:

```bash
curl -X POST \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: API_KEY' \
  http://localhost:8080/v1/matches \
  -d '{
    "registration_category_id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
    "match_category_id": "a6e9127a-3f9a-47e6-8564-383267ffd61b",
    "match_status_id": "5a0db153-17c1-47f4-857f-7bf946f11eaa",
    "pairs": [
      "1d860c33-5d9d-4cbc-a7ce-a04f9be1a295",
      "f6521429-112c-44b7-a70f-ba79a207aaaa"
    ]
  }'
```

Respuesta de la petición:

```json
{
  "data": {
    "match": {
      "id": "af5f3bf4-02ae-43cb-ac62-ab9fe416c78c",
      "is_active": 1,
      "created_at": "2025-03-22 00:40:15",
      "updated_at": "2025-03-22 00:40:15",
      "registration_category": {
        "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
        "name": "open",
        "description": "Libre"
      },
      "match_category": {
        "id": "a6e9127a-3f9a-47e6-8564-383267ffd61b",
        "name": "final",
        "description": "Final"
      },
      "match_status": {
        "id": "5a0db153-17c1-47f4-857f-7bf946f11eaa",
        "name": "playing",
        "description": "En juego"
      }
    },
    "pairs": [
      {
        "pair": {
          "id": "1d860c33-5d9d-4cbc-a7ce-a04f9be1a295",
          "is_eliminated": 0,
          "is_active": 1,
          "created_at": "2025-03-20 21:23:55",
          "updated_at": "2025-03-20 21:23:55",
          "registration_category": {
            "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
            "name": "open",
            "description": "Libre"
          }
        },
        "relationship": {
          "id": "a8683b32-f9cc-4814-acbf-df7c97b3d8f9",
          "pair_id": "1d860c33-5d9d-4cbc-a7ce-a04f9be1a295",
          "match_id": "af5f3bf4-02ae-43cb-ac62-ab9fe416c78c",
          "score": 0,
          "is_winner": 0,
          "created_at": "2025-03-22 00:40:15",
          "updated_at": "2025-03-22 00:40:15"
        }
      },
      {
        "pair": {
          "id": "f6521429-112c-44b7-a70f-ba79a207aaaa",
          "is_eliminated": 0,
          "is_active": 1,
          "created_at": "2025-03-20 21:23:55",
          "updated_at": "2025-03-20 21:23:55",
          "registration_category": {
            "id": "5d840f53-ffb0-427c-8554-bfff885d6b6a",
            "name": "open",
            "description": "Libre"
          }
        },
        "relationship": {
          "id": "c59b7cff-edbb-42f8-87b8-f64bdbe52fc7",
          "pair_id": "f6521429-112c-44b7-a70f-ba79a207aaaa",
          "match_id": "af5f3bf4-02ae-43cb-ac62-ab9fe416c78c",
          "score": 0,
          "is_winner": 0,
          "created_at": "2025-03-22 00:40:15",
          "updated_at": "2025-03-22 00:40:15"
        }
      }
    ]
  },
  "status": 201,
  "description": "The match was created successfully"
}
```


code:
# ❌ Eliminar un partido

```
[DELETE] /v1/matches/@id
```

Parámetros de la ruta:

| Parámetros | Tipo | Requerido | Descripción |
| ---------- | ---- | --------- | ----------- |
| `id` | `string` | `true` | Identificador del partido. |

Ejemplo:

```bash
curl -X DELETE \
  -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:

```json
{
  "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"
    }
  },
  "status": 200,
  "description": "The match was deleted successfully"
}
```


code:
# 👥 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 🎾 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](../registration-categories/index.html)). |
| `match_category_id` | `string` | `exact_len: 36` | `null` | Identificador de la categoría de las rondas de los partidos ([ver](../match-categories/index.html)). |
| `match_status_id` | `string` | `exact_len: 36` | `null` | Identificador del estatus de juego de los partidos ([ver](../match-status/index.html)). |
| `is_active` | `boolean` | `contains: [yes/no, on/off, 1/0, true/false]` | `null` | Filtrar los partidos por estatus de actividad. |

Ejemplo:

```bash
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:

```json
{
  "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"
}
```


code:
# 👀 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:

```bash
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:

```json
{
  "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"
}
```


code:
# ✏ 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-categories/index.html)). |
| `match_status_id` | `string` | `false` | `exact_len: 36`  | Identificador del estatus de juego del partido ([ver](../match-status/index.html)). |
| `is_active` | `boolean` | `false` | `contains: [yes/no, on/off, 1/0, true/false]` | Estatus de actividad del partido. |

Ejemplo:

```bash
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:

```json
{
  "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"
}
```


code:
# ➕ 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](../registration-categories/index.html)). |
| `players` | `array[players]` |  `true` | `array_size_equal: 2` | Una lista con la información de los jugadores de la pareja ([ver](../players/create.html)). |

Ejemplo:

```bash
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:

```json
{
  "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"
}
```


code:
# 👫 + 🏃♂ 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](../registration-categories/index.html)). |
| `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:

```bash
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:

```json
{
  "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"
}
```


code:
# ➕ 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](../registration-categories/index.html)). |
| `players` | `array[players]` |  `true` | `array_size_equal: 2` | Una lista con los identificadores de los jugadores de la pareja ([ver](../players/index.html)). |

Ejemplo:

```bash
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:

```json
{
  "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"
}
```


code:
# ❌ 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👥 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👫 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](../registration-categories/index.html)). |
| `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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👀 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:

```bash
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:

```json
{
  "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"
}
```


code:
# ✏ 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:

```bash
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:

```json
{
  "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"
}
```


code:
# ➕ 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:

```bash
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:

```json
{
  "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"
}
```


code:
# ❌ 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👥 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 🏃♂ 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👫 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👀 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:

```bash
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:

```json
{
  "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"
}
```


code:
# ✏ 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 👥 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:

```bash
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:

```json
{
  "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"
}
```


code:
# 🏷 / 📋  Categorías de inscripción

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

```
[GET] /v1/categories/registrations
```

Ejemplo:

```bash
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:

```json
{
  "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"
}
```