Skip to content

Referencia API

Esta sección proporciona una referencia completa de la API disponible.

Introducción

La API está diseñada para ser simple y fácil de usar. Todos los endpoints siguen las mejores prácticas REST y devuelven respuestas en formato JSON.

URL Base

https://api.ejemplo.com/v1

Autenticación

La mayoría de los endpoints requieren autenticación mediante tokens Bearer.

Obtener un Token

http
POST /auth/login
Content-Type: application/json

{
  "email": "usuario@ejemplo.com",
  "password": "tu-contraseña"
}

Respuesta:

json
{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "expiresIn": 3600,
  "user": {
    "id": "123",
    "email": "usuario@ejemplo.com",
    "name": "Usuario"
  }
}

Usar el Token

Incluye el token en el header de tus peticiones:

http
Authorization: Bearer tu-token-aqui

Endpoints Principales

Usuarios

GET /users

Obtiene la lista de usuarios.

Parámetros de Query:

ParámetroTipoDescripción
pagenumberNúmero de página (por defecto: 1)
limitnumberElementos por página (por defecto: 10)
searchstringTérmino de búsqueda

Ejemplo de Petición:

bash
curl -X GET "https://api.ejemplo.com/v1/users?page=1&limit=10" \
  -H "Authorization: Bearer tu-token"

Respuesta:

json
{
  "data": [
    {
      "id": "1",
      "name": "Juan Pérez",
      "email": "juan@ejemplo.com",
      "createdAt": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "total": 100,
    "page": 1,
    "limit": 10,
    "pages": 10
  }
}

GET /users/:id

Obtiene un usuario por ID.

Parámetros de URL:

ParámetroTipoDescripción
idstringID del usuario

Ejemplo:

bash
curl -X GET "https://api.ejemplo.com/v1/users/123" \
  -H "Authorization: Bearer tu-token"

POST /users

Crea un nuevo usuario.

Body:

json
{
  "name": "María García",
  "email": "maria@ejemplo.com",
  "password": "contraseña-segura"
}

Respuesta:

json
{
  "id": "124",
  "name": "María García",
  "email": "maria@ejemplo.com",
  "createdAt": "2025-11-22T10:00:00Z"
}

PUT /users/:id

Actualiza un usuario existente.

Body:

json
{
  "name": "María García Actualizado",
  "email": "maria.nueva@ejemplo.com"
}

DELETE /users/:id

Elimina un usuario.

Respuesta:

json
{
  "message": "Usuario eliminado exitosamente"
}

Códigos de Estado

La API usa los siguientes códigos de estado HTTP:

CódigoSignificado
200OK - La petición fue exitosa
201Created - Recurso creado exitosamente
400Bad Request - La petición es inválida
401Unauthorized - Autenticación requerida
403Forbidden - No tienes permisos
404Not Found - Recurso no encontrado
500Internal Server Error - Error del servidor

Errores

Cuando ocurre un error, la API devuelve un objeto con el siguiente formato:

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Los datos proporcionados son inválidos",
    "details": [
      {
        "field": "email",
        "message": "El email es requerido"
      }
    ]
  }
}

Códigos de Error Comunes

CódigoDescripción
VALIDATION_ERRORError de validación de datos
AUTH_ERRORError de autenticación
NOT_FOUNDRecurso no encontrado
PERMISSION_DENIEDPermisos insuficientes
RATE_LIMIT_EXCEEDEDLímite de tasa excedido

Límites de Tasa

La API tiene límites de tasa para prevenir abuso:

  • Autenticado: 1000 peticiones por hora
  • No autenticado: 100 peticiones por hora

Los headers de respuesta incluyen información sobre tu límite:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1637664000

Versionado

La API usa versionado en la URL. La versión actual es v1.

https://api.ejemplo.com/v1/users

Aviso de Deprecación

Las versiones antiguas se mantendrán durante 6 meses después de que se lance una nueva versión.

Webhooks

Puedes configurar webhooks para recibir notificaciones de eventos.

Eventos Disponibles

  • user.created - Usuario creado
  • user.updated - Usuario actualizado
  • user.deleted - Usuario eliminado

Configurar un Webhook

http
POST /webhooks
Content-Type: application/json

{
  "url": "https://tu-sitio.com/webhook",
  "events": ["user.created", "user.updated"],
  "secret": "tu-secreto-para-verificar-firma"
}

SDKs

Ofrecemos SDKs oficiales para varios lenguajes:

Próximos Pasos

Documentación del proyecto