API Simulator

Simula respuestas de API REST para probar tus aplicaciones, Postman o cualquier cliente HTTP. Endpoints listos para usar con diferentes métodos HTTP y códigos de estado.

CRUD Completo

Endpoints para GET, POST, PUT y DELETE con simulación de datos reales.

Autenticación

Endpoints protegidos con Bearer token para probar flujos de autenticación.

Códigos de Estado

Prueba diferentes códigos HTTP: 200, 201, 400, 401, 403, 404, 500, etc.

Documentación de API

Base URL: http://localhost:3000/api/v1

Usuarios

GEThttp://localhost:3000/api/v1/users

Obtiene todos los usuarios disponibles

Query Parameters

ParámetroTipoRequeridoDescripción
idnumberNoID del usuario específico

Ejemplo de Respuesta

{
  "data": [
    {
      "id": 1,
      "name": "Juan Pérez",
      "email": "juan@example.com",
      "age": 28
    }
  ],
  "count": 3,
  "message": "Usuarios obtenidos exitosamente"
}
POSThttp://localhost:3000/api/v1/users

Crea un nuevo usuario

Body Parameters

ParámetroTipoRequeridoDescripción
namestringNombre completo del usuario
emailstringEmail único del usuario
agenumberNoEdad del usuario

Ejemplo de Request Body

{
  "name": "Juan Pérez",
  "email": "juan@example.com",
  "age": 28
}

Ejemplo de Respuesta

{
  "data": {
    "id": 4,
    "name": "Juan Pérez",
    "email": "juan@example.com",
    "age": 28,
    "createdAt": "2024-01-15T10:30:00.000Z"
  },
  "message": "Usuario creado exitosamente"
}
PUThttp://localhost:3000/api/v1/users

Actualiza un usuario existente

Body Parameters

ParámetroTipoRequeridoDescripción
idnumberID del usuario a actualizar
namestringNoNuevo nombre
emailstringNoNuevo email
agenumberNoNueva edad

Ejemplo de Request Body

{
  "id": 1,
  "name": "Juan Pérez Actualizado",
  "age": 29
}

Ejemplo de Respuesta

{
  "data": {
    "id": 1,
    "name": "Juan Pérez Actualizado",
    "email": "juan@example.com",
    "age": 29,
    "updatedAt": "2024-01-15T10:30:00.000Z"
  },
  "message": "Usuario actualizado exitosamente"
}
DELETEhttp://localhost:3000/api/v1/users

Elimina un usuario

Query Parameters

ParámetroTipoRequeridoDescripción
idnumberID del usuario a eliminar

Ejemplo de Respuesta

{
  "data": {
    "id": 1,
    "name": "Juan Pérez",
    "email": "juan@example.com",
    "age": 28
  },
  "message": "Usuario eliminado exitosamente"
}

Productos

GEThttp://localhost:3000/api/v1/products

Obtiene todos los productos con paginación, filtra por categoría o busca por ID

Query Parameters

ParámetroTipoRequeridoDescripción
idnumberNoID del producto específico
categorystringNoFiltrar por categoría (Electronics, Clothing, Books, Home & Kitchen, Sports)
pagenumberNoNúmero de página (default: 1)
limitnumberNoProductos por página (default: 10)

Ejemplo de Respuesta

{
  "data": [
    {
      "id": 1,
      "name": "Laptop",
      "price": 999.99,
      "category": "Electronics",
      "stock": 15
    },
    {
      "id": 2,
      "name": "Mouse",
      "price": 29.99,
      "category": "Electronics",
      "stock": 50
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 33,
    "totalPages": 4,
    "hasNextPage": true,
    "hasPreviousPage": false
  },
  "message": "Productos obtenidos exitosamente"
}
POSThttp://localhost:3000/api/v1/products

Crea un nuevo producto

Body Parameters

ParámetroTipoRequeridoDescripción
namestringNombre del producto
pricenumberPrecio del producto
categorystringNoCategoría del producto (default: "General")
stocknumberNoCantidad en stock (default: 0)

Ejemplo de Request Body

{
  "name": "Monitor",
  "price": 299.99,
  "category": "Electronics",
  "stock": 20
}

Ejemplo de Respuesta

{
  "data": {
    "id": 4,
    "name": "Monitor",
    "price": 299.99,
    "category": "Electronics",
    "stock": 20,
    "createdAt": "2024-01-15T10:30:00.000Z"
  },
  "message": "Producto creado exitosamente"
}
PUThttp://localhost:3000/api/v1/products/{id}

Actualiza un producto existente

Path Parameters

ParámetroTipoDescripción
idnumberID del producto a actualizar

Body Parameters

ParámetroTipoRequeridoDescripción
namestringNoNuevo nombre
pricenumberNoNuevo precio
categorystringNoNueva categoría
stocknumberNoNuevo stock

Ejemplo de Request Body

{
  "name": "Laptop Pro",
  "price": 1299.99,
  "stock": 10
}

Ejemplo de Respuesta

{
  "data": {
    "id": 1,
    "name": "Laptop Pro",
    "price": 1299.99,
    "category": "Electronics",
    "stock": 10,
    "updatedAt": "2024-01-15T10:30:00.000Z"
  },
  "message": "Producto actualizado exitosamente"
}
DELETEhttp://localhost:3000/api/v1/products/{id}

Elimina un producto

Path Parameters

ParámetroTipoDescripción
idnumberID del producto a eliminar

Ejemplo de Respuesta

{
  "data": {
    "id": 1,
    "name": "Laptop",
    "price": 999.99,
    "category": "Electronics",
    "stock": 15
  },
  "message": "Producto eliminado exitosamente"
}

Pedidos (Reintentos)

GEThttp://localhost:3000/api/v1/orders

Obtiene pedidos. Falla intencionalmente las primeras 2 veces para demostrar flujos de reintentos (n8n, etc.)

Query Parameters

ParámetroTipoRequeridoDescripción
idnumberNoID del pedido específico
resetstringNoResetear contador de intentos: ?reset=true

Ejemplo de Respuesta (Intento 3+)

{
  "data": [
    {
      "id": 1,
      "orderNumber": "ORD-2024-001",
      "customerName": "Juan Pérez",
      "items": [
        {
          "productId": 1,
          "name": "Laptop",
          "quantity": 1,
          "price": 999.99
        }
      ],
      "total": 1059.97,
      "status": "completed",
      "createdAt": "2024-01-15T10:30:00.000Z"
    }
  ],
  "count": 3,
  "message": "Pedidos obtenidos exitosamente",
  "attempt": 3,
  "note": "Este endpoint falla intencionalmente las primeras 2 veces para demostrar flujos de reintentos"
}
⚠️ Comportamiento especial: Este endpoint falla intencionalmente las primeras 2 veces (503 Service Unavailable) y funciona correctamente en el tercer intento. Perfecto para probar flujos de reintentos en n8n.

Endpoints Protegidos

GEThttp://localhost:3000/api/v1/protected

Obtiene datos protegidos que requieren autenticación

Headers

HeaderRequeridoDescripción
AuthorizationBearer token: Bearer demo-token-123

Ejemplo de Respuesta

{
  "data": {
    "message": "Acceso autorizado",
    "user": {
      "id": 1,
      "name": "Usuario Demo",
      "role": "admin"
    },
    "timestamp": "2024-01-15T10:30:00.000Z"
  },
  "message": "Datos protegidos obtenidos exitosamente"
}
POSThttp://localhost:3000/api/v1/protected

Crea un recurso protegido

Headers

HeaderRequeridoDescripción
AuthorizationBearer token: Bearer demo-token-123

Body Parameters

ParámetroTipoRequeridoDescripción
titlestringNoTítulo del recurso
descriptionstringNoDescripción del recurso

Ejemplo de Request Body

{
  "title": "Recurso Protegido",
  "description": "Este es un recurso que requiere autenticación"
}

Ejemplo de Respuesta

{
  "data": {
    "title": "Recurso Protegido",
    "description": "Este es un recurso que requiere autenticación",
    "id": 456,
    "createdAt": "2024-01-15T10:30:00.000Z",
    "createdBy": "Usuario Demo"
  },
  "message": "Recurso creado exitosamente"
}

Búsqueda

GEThttp://localhost:3000/api/v1/search

Realiza una búsqueda con parámetros de paginación y ordenamiento

Query Parameters

ParámetroTipoRequeridoDescripción
qstringTérmino de búsqueda
limitnumberNoNúmero de resultados (default: 10)
offsetnumberNoDesplazamiento para paginación (default: 0)
sortstringNoOrdenamiento: "asc" o "desc" (default: "asc")

Ejemplo de Respuesta

{
  "data": [
    {
      "id": 1,
      "title": "Resultado 1",
      "description": "Contiene: laptop",
      "relevance": 0.95
    }
  ],
  "pagination": {
    "total": 3,
    "limit": 10,
    "offset": 0,
    "hasMore": false
  },
  "query": "laptop",
  "message": "Búsqueda realizada exitosamente"
}

Códigos de Estado

GEThttp://localhost:3000/api/v1/status

Prueba diferentes códigos de estado HTTP

Query Parameters

ParámetroTipoRequeridoDescripción
codenumberNoCódigo HTTP a probar (200, 201, 400, 401, 403, 404, 409, 500). Default: 200

Ejemplo de Respuesta

{
  "status": 200,
  "message": "OK",
  "description": "Solicitud exitosa",
  "timestamp": "2024-01-15T10:30:00.000Z"
}