API#

Documentación API REST para Construbot.

Descripción general#

Construbot proporciona una API REST creada con Django REST Framework para aplicaciones móviles e integraciones externas.

URL base: /api/v1/

Autenticación: JWT (tokens web JSON)

Formato: JSON

Inicio rápido#

1. Obtener ficha:

curl -X POST http://localhost:8000/api/v1/api-token-auth/ \\
  -H "Content-Type: application/json" \\
  -d '{"email":"user@example.com","password":"password"}'

# Response:
# {"access": "eyJ0...", "refresh": "eyJ0..."}

2. Usar ficha:

curl -H "Authorization: Bearer eyJ0..." \\
  http://localhost:8000/api/v1/contracts/

3. Actualizar token:

curl -X POST http://localhost:8000/api/v1/api-token-refresh/ \\
  -d '{"refresh":"eyJ0..."}'

Autenticación#

Fichas JWT:

  • Duración del token de acceso: 1 hora

  • Duración del token de actualización: 7 días

  • Los tokens rotan al actualizar

Formato de encabezado:

Authorization: Bearer <access_token>

Puntos finales:

  • POST /api/v1/api-token-auth/ - Obtener par de tokens

  • POST /api/v1/api-token-refresh/ - Actualizar token de acceso

  • POST /api/v1/api-token-verify/ - Verificar la validez del token

Puntos finales API#

Contratos:

  • GET /api/v1/contracts/ - Listar contratos

  • POST /api/v1/contracts/ - Crear contrato

  • GET /api/v1/contracts/:id/ - Recuperar contrato

  • PUT /api/v1/contracts/:id/ - Actualizar contrato

  • DELETE /api/v1/contracts/:id/ - Eliminar contrato

Estimaciones:

  • GET /api/v1/estimates/ - Lista de estimaciones

  • POST /api/v1/estimates/ - Crear estimación

Contrapartes:

  • GET /api/v1/contrapartes/ - Listar contrapartes

  • POST /api/v1/contrapartes/ - Crear contraparte

Formato de respuesta#

Éxito (200):

{
  "count": 100,
  "next": "http://api.example.com/api/v1/contracts/?page=2",
  "previous": null,
  "results": [
    {
      "id": 1,
      "folio": "C-001",
      "company": 1,
      "contraparte": "Acme Corp",
      "monto": "1000000.00"
    }
  ]
}

Error (400):

{
  "detail": "Invalid input",
  "errors": {
    "folio": ["This field is required."]
  }
}

Permisos#

Todos los puntos finales requieren autenticación.

Alcance de la empresa: Resultados filtrados por empresa_activa del usuario.

Niveles de permiso: Ver Niveles de permiso

Ver también#