primer cambio
This commit is contained in:
157
API_DOCUMENTATION.md
Normal file
157
API_DOCUMENTATION.md
Normal file
@@ -0,0 +1,157 @@
|
||||
# Documentación API - Servicio SQL Injector
|
||||
|
||||
**Base URL**: `http://localhost:3120/v1`
|
||||
|
||||
Este servicio permite la ejecución remota de consultas SQL en tiendas distribuidas mediante un mecanismo de polling, almacenamiento de resultados y consulta de historial.
|
||||
|
||||
---
|
||||
|
||||
## 1. Consultar Comandos Pendientes (Polling)
|
||||
Este endpoint es consumido por el cliente (tienda) para saber si tiene algún comando SQL pendiente de ejecutar.
|
||||
|
||||
- **Método**: `GET`
|
||||
- **Ruta**: `/commands`
|
||||
- **Parámetros (Query)**:
|
||||
- `store_id`: ID de la tienda (Requerido).
|
||||
|
||||
**Ejemplo de Solicitud**:
|
||||
```http
|
||||
GET /v1/commands?store_id=44
|
||||
```
|
||||
|
||||
**Respuestas**:
|
||||
- **200 OK**: Se encontró un comando pendiente.
|
||||
```json
|
||||
{
|
||||
"command_id": 123,
|
||||
"sql": "SELECT * FROM users LIMIT 1",
|
||||
"privilegio": "READ"
|
||||
}
|
||||
```
|
||||
- **204 No Content**: No hay comandos pendientes.
|
||||
- **500 Internal Server Error**: Error del servidor.
|
||||
|
||||
---
|
||||
|
||||
## 2. Crear Nuevo Comando
|
||||
Permite a un administrador o sistema central poner en cola una instrucción SQL para ser ejecutada por una tienda específica.
|
||||
|
||||
- **Método**: `POST`
|
||||
- **Ruta**: `/commands`
|
||||
- **Cuerpo (JSON)**:
|
||||
- `store_id` (Number): ID de la tienda objetivo (Requerido).
|
||||
- `sql` (String): Sentencia SQL a ejecutar (Requerido).
|
||||
- `privilegio` (String): Nivel de permiso, por defecto "READ". Opcional.
|
||||
- `id_user` (Number): ID del usuario que solicita el comando. Opcional.
|
||||
|
||||
**Ejemplo de Solicitud**:
|
||||
```json
|
||||
{
|
||||
"store_id": 44,
|
||||
"sql": "SELECT count(*) FROM ventas",
|
||||
"privilegio": "READ",
|
||||
"id_user": 1
|
||||
}
|
||||
```
|
||||
|
||||
**Respuesta Exitosa (201 Created)**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Comando creado exitosamente",
|
||||
"command_id": 124
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Guardar Resultado de Comando
|
||||
Este endpoint es utilizado por el cliente (tienda) para reportar el resultado de la ejecución del SQL.
|
||||
|
||||
- **Método**: `POST`
|
||||
- **Ruta**: `/commands/result`
|
||||
- **Cuerpo (JSON)**:
|
||||
- `command_id` (Number): ID del comando ejecutado (Requerido).
|
||||
- `result` (Object/Array): El resultado de la consulta SQL.
|
||||
*Nota: Si se envía el cuerpo sin la propiedad `result`, el sistema intentará tomar todo el cuerpo como el resultado.*
|
||||
|
||||
**Ejemplo de Solicitud**:
|
||||
```json
|
||||
{
|
||||
"command_id": 124,
|
||||
"result": [
|
||||
{ "count": 150 }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**Respuesta Exitosa (200 OK)**:
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Resultado guardado correctamente"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Consultar Estado/Resultado de Comando
|
||||
Permite consultar si un comando específico ya fue ejecutado y obtener su resultado.
|
||||
|
||||
- **Método**: `GET`
|
||||
- **Ruta**: `/commands/:command_id`
|
||||
- **Parámetros (Path)**:
|
||||
- `command_id`: ID del comando a consultar.
|
||||
|
||||
**Ejemplo de Solicitud**:
|
||||
```http
|
||||
GET /v1/commands/124
|
||||
```
|
||||
|
||||
**Respuestas**:
|
||||
- **200 OK**: Comando completado.
|
||||
```json
|
||||
{
|
||||
"command_id": 124,
|
||||
"status": "completed",
|
||||
"result": [
|
||||
{ "count": 150 }
|
||||
],
|
||||
"processed_at": "2026-01-13T19:00:00.000Z"
|
||||
}
|
||||
```
|
||||
- **404 Not Found**: El comando no existe o aún no ha sido procesado (estado pendiente).
|
||||
|
||||
---
|
||||
|
||||
## 5. Historial de Comandos por Usuario
|
||||
Devuelve una lista de los últimos comandos solicitados por un usuario específico.
|
||||
|
||||
- **Método**: `GET`
|
||||
- **Ruta**: `/commands/user/:id_user`
|
||||
- **Parámetros (Path)**:
|
||||
- `id_user`: ID del usuario.
|
||||
- **Parámetros (Query)**:
|
||||
- `limit`: Cantidad de registros a traer (Default: 50).
|
||||
|
||||
**Ejemplo de Solicitud**:
|
||||
```http
|
||||
GET /v1/commands/user/1?limit=5
|
||||
```
|
||||
|
||||
**Respuesta Exitosa (200 OK)**:
|
||||
```json
|
||||
[
|
||||
{
|
||||
"command_id": 124,
|
||||
"store_id": 44,
|
||||
"sql": "SELECT count(*) FROM ventas",
|
||||
"privilegio": "READ",
|
||||
"estado": "1",
|
||||
"fecha_solicitud": "2026-01-13T18:55:00.000Z",
|
||||
"fecha_proceso": "2026-01-13T19:00:00.000Z",
|
||||
"json_response": [ { "count": 150 } ]
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
Reference in New Issue
Block a user