openapi: 3.0.0
info:
  title: ERP Generic - Core API
  description: |
    API para el sistema ERP genérico multitenant.

    ## Características principales
    - Autenticación JWT y gestión de sesiones
    - Multi-tenant con aislamiento de datos
    - Gestión financiera y contable
    - Control de inventario y almacenes
    - Compras y ventas
    - CRM y gestión de partners
    - Proyectos y recursos humanos
    - Sistema de permisos granular (API Keys)

    ## Autenticación
    Todos los endpoints requieren autenticación mediante Bearer Token (JWT).
    Algunos endpoints administrativos pueden requerir API Key específica.

  version: 0.1.0
  contact:
    name: ERP Generic Support
    email: support@erpgeneric.com
  license:
    name: Proprietary

servers:
  - url: http://localhost:3003/api/v1
    description: Desarrollo local
  - url: https://api.erpgeneric.com/api/v1
    description: Producción

tags:
  - name: Auth
    description: Autenticación y autorización
  - name: Users
    description: Gestión de usuarios
  - name: Companies
    description: Gestión de empresas (tenants)
  - name: Core
    description: Configuración central y parámetros
  - name: Partners
    description: Gestión de partners (clientes, proveedores, contactos)
  - name: Inventory
    description: Control de inventario y productos
  - name: Financial
    description: Gestión financiera y contable
  - name: Purchases
    description: Compras y órdenes de compra
  - name: Sales
    description: Ventas, cotizaciones y pedidos
  - name: Projects
    description: Gestión de proyectos y tareas
  - name: System
    description: Configuración del sistema y logs
  - name: CRM
    description: CRM y gestión de oportunidades
  - name: HR
    description: Recursos humanos y empleados
  - name: Reports
    description: Reportes y analíticas

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token JWT obtenido del endpoint de login

    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API Key para operaciones específicas

  schemas:
    ApiResponse:
      type: object
      properties:
        success:
          type: boolean
        data:
          type: object
        error:
          type: string

    PaginatedResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          type: array
          items:
            type: object
        pagination:
          type: object
          properties:
            page:
              type: integer
              example: 1
            limit:
              type: integer
              example: 20
            total:
              type: integer
              example: 100
            totalPages:
              type: integer
              example: 5

security:
  - BearerAuth: []

paths:
  /health:
    get:
      tags:
        - Health
      summary: Health check del servidor
      security: []
      responses:
        '200':
          description: Servidor funcionando correctamente
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: ok
                  timestamp:
                    type: string
                    format: date-time
