factuges_2025/docs/API.md
2025-04-27 22:47:47 +02:00

5.2 KiB

Diseño de API RESTful

1. Autenticación y Gestión de Sesiones

1.1. Inicio de sesión

Endpoint:
POST /api/auth/login

Solicitud:

{
  "email": "usuario@empresa.com",
  "password": "contraseña_segura"
}

Respuesta:

{
  "token": "eyJhbGciOi...",
  "user": {
    "id": 123,
    "username": "usuario",
    "email": "usuario@empresa.com"
  },
  "companies": [
    { "id": 1, "name": "Empresa A" },
    { "id": 2, "name": "Empresa B" }
  ]
}

1.2. Cierre de sesión

Endpoint:
POST /api/auth/logout

Encabezados:

Authorization: Bearer <token>

Respuesta:

{
  "message": "Sesión cerrada exitosamente"
}

1.3. Selección de empresa activa

Endpoint:
POST /api/auth/select-company

Solicitud:

{
  "company_id": 1
}

Respuesta:

{
  "message": "Empresa seleccionada exitosamente"
}

2. Gestión de Empresas

2.1. Listar empresas disponibles

Endpoint:
GET /api/companies

Encabezados:

Authorization: Bearer <token>

Respuesta:

[
  {
    "id": 1,
    "name": "Empresa A",
    "country_code": "ES",
    "currency_code": "EUR"
  },
  { "id": 2, "name": "Empresa B", "country_code": "US", "currency_code": "USD" }
]

2.2. Crear una nueva empresa

Endpoint:
POST /api/companies

Solicitud:

{
  "name": "Nueva Empresa",
  "country_code": "ES",
  "currency_code": "EUR"
}

Respuesta:

{
  "id": 3,
  "message": "Empresa creada exitosamente"
}

2.3. Actualizar datos de una empresa

Endpoint:
PUT /api/companies/{company_id}

Solicitud:

{
  "name": "Empresa Actualizada",
  "currency_code": "USD"
}

Respuesta:

{
  "message": "Empresa actualizada correctamente"
}

2.4. Eliminar una empresa

Endpoint:
DELETE /api/companies/{company_id}

Respuesta:

{
  "message": "Empresa eliminada exitosamente"
}

3. Gestión de Sucursales

3.1. Listar sucursales de una empresa

Endpoint:
GET /api/companies/{company_id}/branches

Respuesta:

[
  { "id": 10, "name": "Sucursal Madrid" },
  { "id": 20, "name": "Sucursal Barcelona" }
]

3.2. Crear una sucursal

Endpoint:
POST /api/companies/{company_id}/branches

Solicitud:

{
  "name": "Sucursal Sevilla",
  "location": "Avenida Principal 123"
}

Respuesta:

{
  "id": 30,
  "message": "Sucursal creada exitosamente"
}

3.3. Actualizar datos de una sucursal

Endpoint:
PUT /api/branches/{branch_id}

Solicitud:

{
  "name": "Sucursal Actualizada",
  "location": "Calle Nueva 456"
}

Respuesta:

{
  "message": "Sucursal actualizada correctamente"
}

3.4. Eliminar una sucursal

Endpoint:
DELETE /api/branches/{branch_id}

Respuesta:

{
  "message": "Sucursal eliminada exitosamente"
}

4. Gestión de Usuarios

4.1. Listar usuarios de una empresa

Endpoint:
GET /api/companies/{company_id}/users

Respuesta:

[
  {
    "id": 1,
    "username": "admin",
    "email": "admin@empresa.com",
    "roles": ["Administrador"]
  },
  {
    "id": 2,
    "username": "usuario",
    "email": "usuario@empresa.com",
    "roles": ["Ventas"]
  }
]

4.2. Crear un usuario

Endpoint:
POST /api/users

Solicitud:

{
  "username": "nuevo_usuario",
  "email": "nuevo@empresa.com",
  "password": "clave_segura",
  "company_id": 1,
  "roles": ["Ventas"]
}

Respuesta:

{
  "id": 3,
  "message": "Usuario creado exitosamente"
}

4.3. Actualizar usuario

Endpoint:
PUT /api/users/{user_id}

Solicitud:

{
  "email": "nuevo_correo@empresa.com",
  "roles": ["Compras"]
}

Respuesta:

{
  "message": "Usuario actualizado correctamente"
}

4.4. Eliminar usuario

Endpoint:
DELETE /api/users/{user_id}

Respuesta:

{
  "message": "Usuario eliminado exitosamente"
}

5. Gestión de Permisos

5.1. Obtener permisos de un usuario en una empresa

Endpoint:
GET /api/companies/{company_id}/users/{user_id}/permissions

Respuesta:

{
  "modules": {
    "Presupuestos": ["read", "write"],
    "Facturas": ["read"],
    "Clientes": ["read", "write", "delete"]
  }
}

5.2. Actualizar permisos de un usuario

Endpoint:
PUT /api/users/{user_id}/permissions

Solicitud:

{
  "modules": {
    "Presupuestos": ["read", "write"],
    "Inventario": ["read"]
  }
}

Respuesta:

{
  "message": "Permisos actualizados correctamente"
}

6. Auditoría

6.1. Obtener historial de cambios en documentos

Endpoint:
GET /api/audit/documents/{document_id}

Respuesta:

[
  {
    "timestamp": "2025-01-22T14:00:00Z",
    "user": "admin",
    "change": "Se modificó el precio de 100 a 120"
  },
  {
    "timestamp": "2025-01-20T10:30:00Z",
    "user": "usuario",
    "change": "Se creó el documento"
  }
]