{"openapi":"3.0.3","info":{"title":"Inversiones ICR — ERP API","version":"1.0.0","description":"API REST del ERP, pensada para integraciones (N8N y similares). Todo comando de escritura acepta un campo `channel` (`web`|`telegram`|`api`|`n8n`) que queda registrado en la auditoría, así una acción disparada desde un workflow queda trazada igual que una hecha a mano en el panel. Autenticación con un JWT de sesión (`POST /auth/login`, vence a las 12h) o con un token de servicio de larga duración (Administración → Tokens de servicio, prefijo `icr_`) — ambos en el header `Authorization: Bearer <token>`. Este documento se genera leyendo las rutas reales del backend en el momento de pedirlo, así que nunca queda desactualizado respecto a qué endpoints existen y qué permiso exige cada uno."},"servers":[{"url":"/api"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"JWT de sesión (12h) o token de servicio de larga duración con prefijo icr_ (ver Administración → Tokens de servicio)."}},"schemas":{"EnvelopeSuccess":{"type":"object","properties":{"status":{"type":"string","example":"success"},"data":{},"error":{"nullable":true,"example":null}}},"EnvelopeError":{"type":"object","properties":{"status":{"type":"string","example":"error"},"data":{"nullable":true,"example":null},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}}}},"paths":{"/auth/login":{"post":{"tags":["Autenticación"],"summary":"Público (sin autenticación)","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/auth/me":{"get":{"tags":["Autenticación"],"summary":"Requiere sesión autenticada, sin permiso específico","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/settings":{"get":{"tags":["Configuración"],"summary":"Público (sin autenticación)","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}}}},"/nav-icons":{"get":{"tags":["Otros"],"summary":"Requiere sesión autenticada, sin permiso específico","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Otros"],"summary":"Requiere el permiso \"settings.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/telegram/webhook":{"post":{"tags":["Telegram"],"summary":"Público (sin autenticación)","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/chatbot/webhook":{"post":{"tags":["Otros"],"summary":"Requiere sesión autenticada, sin permiso específico","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/chatbot/config":{"get":{"tags":["Otros"],"summary":"Requiere sesión autenticada, sin permiso específico","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"put":{"tags":["Otros"],"summary":"Requiere el permiso \"settings.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/openapi.json":{"get":{"tags":["Documentación"],"summary":"Público (sin autenticación)","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}}}},"/inventory/receive":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.receive\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/remove":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.remove\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/transfer":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.transfer\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/product":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.product.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/products/import-csv":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.product.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/products/{sku}/photo":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.product.update\"","parameters":[{"name":"sku","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/kits/{kitSku}/items":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.product.update\"","parameters":[{"name":"kitSku","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.stock.get\"","parameters":[{"name":"kitSku","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/kits/{kitSku}/items/{itemSku}":{"delete":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.product.update\"","parameters":[{"name":"kitSku","in":"path","required":true,"schema":{"type":"string"}},{"name":"itemSku","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/stock":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.stock.get\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/products":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.stock.search\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/movements":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/alerts":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.alerts.get\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/warehouses":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.stock.get\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/warehouses-managed":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.warehouse.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/warehouses-managed/{id}":{"patch":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.warehouse.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/locations":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.warehouse.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/locations/{id}":{"patch":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.warehouse.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/reserve":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.reserve\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/release_reservation":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.release_reservation\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/reservations":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/adjust":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.adjust\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/adjust/{id}/decide":{"post":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.adjust.approve\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/inventory/adjustments":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/inventory/audit":{"get":{"tags":["Almacén"],"summary":"Requiere el permiso \"inventory.audit.get\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/purchases/orders":{"post":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/purchases/orders/{numero}/send":{"post":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.send\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/purchases/orders/{numero}/cancel":{"post":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.cancel\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/purchases/orders/{numero}/receive":{"post":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.receive\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/purchases/orders/{numero}":{"get":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.query\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/purchases/replenishment-suggestions":{"get":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.replenishment.get\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/purchases/suppliers":{"get":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Compras"],"summary":"Requiere el permiso \"purchases.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/projects":{"post":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/projects/{codigo}/status":{"post":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.update_status\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/projects/{codigo}/labor":{"post":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.labor.register\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/projects/{codigo}":{"get":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.query\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/projects-technicians":{"get":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/projects-clients":{"get":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/projects-profitability-report":{"get":{"tags":["Proyectos"],"summary":"Requiere el permiso \"projects.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/accounts":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.account.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/fiscal-params":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.fiscal_param.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/rules":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.rule.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/rules/{evento}/toggle":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.rule.manage\"","parameters":[{"name":"evento","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/accounting/entries":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.entry.create\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/entries/{numero}/post":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.entry.post\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/accounting/entries/{numero}/void":{"post":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.entry.void\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/accounting/entries/{numero}":{"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[{"name":"numero","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/reports/income-statement":{"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/accounting/reports/balance-sheet":{"get":{"tags":["Contabilidad"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/rrhh/employees":{"post":{"tags":["RR.HH."],"summary":"Requiere el permiso \"rrhh.employee.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["RR.HH."],"summary":"Requiere el permiso \"rrhh.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/rrhh/employees/{empleadoId}":{"put":{"tags":["RR.HH."],"summary":"Requiere el permiso \"rrhh.employee.manage\"","parameters":[{"name":"empleadoId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/rrhh/attendance/check-in":{"post":{"tags":["RR.HH."],"summary":"Requiere el permiso \"rrhh.attendance.mark\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/rrhh/attendance/check-out":{"post":{"tags":["RR.HH."],"summary":"Requiere el permiso \"rrhh.attendance.mark\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/rrhh/attendance":{"get":{"tags":["RR.HH."],"summary":"Requiere el permiso \"rrhh.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/sales/contracts":{"post":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.contract.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/sales/contracts/{codigo}/milestones":{"post":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.contract.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/sales/contracts/{codigo}/milestones/{hitoId}/pay":{"post":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.contract.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}},{"name":"hitoId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/sales/contracts/{codigo}/status":{"post":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.contract.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/sales/contracts/{codigo}":{"get":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.query\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/sales-receivables":{"get":{"tags":["Ventas"],"summary":"Requiere el permiso \"sales.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/expenses":{"post":{"tags":["Gastos"],"summary":"Requiere el permiso \"expenses.register\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Gastos"],"summary":"Requiere el permiso \"expenses.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/payables/invoices":{"post":{"tags":["Cuentas por pagar"],"summary":"Requiere el permiso \"payables.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Cuentas por pagar"],"summary":"Requiere el permiso \"payables.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/payables/invoices/{codigo}/payments":{"post":{"tags":["Cuentas por pagar"],"summary":"Requiere el permiso \"payables.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/payables/invoices/{codigo}":{"get":{"tags":["Cuentas por pagar"],"summary":"Requiere el permiso \"payables.query\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/payables-report":{"get":{"tags":["Cuentas por pagar"],"summary":"Requiere el permiso \"payables.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/quotes":{"post":{"tags":["Cotizaciones"],"summary":"Requiere el permiso \"quotes.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Cotizaciones"],"summary":"Requiere el permiso \"quotes.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/quotes/{codigo}/status":{"post":{"tags":["Cotizaciones"],"summary":"Requiere el permiso \"quotes.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/quotes/{codigo}/convert":{"post":{"tags":["Cotizaciones"],"summary":"Requiere el permiso \"quotes.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/quotes/{codigo}":{"get":{"tags":["Cotizaciones"],"summary":"Requiere el permiso \"quotes.query\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/assets":{"post":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/assets/{id}/status":{"post":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/assets/{id}":{"get":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.query\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/assets-warranties-expiring":{"get":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/maintenance":{"post":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/maintenance/{id}/complete":{"post":{"tags":["Activos y Mantenimiento"],"summary":"Requiere el permiso \"assets.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/crm/leads":{"post":{"tags":["CRM"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["CRM"],"summary":"Requiere el permiso \"crm.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/crm/leads/{codigo}/stage":{"post":{"tags":["CRM"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/crm/leads/{codigo}/activities":{"post":{"tags":["CRM"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/crm/leads/{codigo}/convert":{"post":{"tags":["CRM"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/crm/leads/{codigo}":{"get":{"tags":["CRM"],"summary":"Requiere el permiso \"crm.query\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/chatbot/conversations":{"get":{"tags":["Otros"],"summary":"Requiere el permiso \"crm.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/chatbot/conversations/{codigo}":{"get":{"tags":["Otros"],"summary":"Requiere el permiso \"crm.query\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/chatbot/conversations/{codigo}/reply":{"post":{"tags":["Otros"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/chatbot/conversations/{codigo}/close":{"post":{"tags":["Otros"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/chatbot/conversations/{codigo}/convert-to-lead":{"post":{"tags":["Otros"],"summary":"Requiere el permiso \"crm.manage\"","parameters":[{"name":"codigo","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/documents":{"post":{"tags":["Gestión documental"],"summary":"Requiere el permiso \"documents.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}},"get":{"tags":["Gestión documental"],"summary":"Requiere el permiso \"documents.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/documents/{id}":{"delete":{"tags":["Gestión documental"],"summary":"Requiere el permiso \"documents.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/dashboard/cashflow":{"get":{"tags":["Panel"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/dashboard/expenses-by-category":{"get":{"tags":["Panel"],"summary":"Requiere el permiso \"accounting.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/dashboard/stock-by-warehouse":{"get":{"tags":["Panel"],"summary":"Requiere el permiso \"inventory.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/dashboard/projects-by-status":{"get":{"tags":["Panel"],"summary":"Requiere el permiso \"projects.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/dashboard/top-clients":{"get":{"tags":["Panel"],"summary":"Requiere el permiso \"sales.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/dashboard/top-suppliers":{"get":{"tags":["Panel"],"summary":"Requiere el permiso \"purchases.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/users":{"get":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/users/{id}":{"patch":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/admin/module-access":{"get":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/admin/role-permissions":{"get":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/admin/integrations-status":{"get":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/admin/api-tokens":{"get":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/admin/api-tokens/{id}/revoke":{"post":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/admin/n8n-webhooks":{"get":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]},"post":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/admin/n8n-webhooks/{id}/toggle":{"post":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/admin/n8n-webhooks/{id}":{"delete":{"tags":["Administración"],"summary":"Requiere el permiso \"users.manage\"","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/ai/chat":{"post":{"tags":["Asistente IA"],"summary":"Requiere el permiso \"ai.chat\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/calendar/events":{"get":{"tags":["Calendario"],"summary":"Requiere el permiso \"calendar.query\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}]}},"/settings/logo":{"post":{"tags":["Configuración"],"summary":"Requiere el permiso \"settings.manage\"","parameters":[],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}},"/nav-icons/{itemKey}":{"delete":{"tags":["Otros"],"summary":"Requiere el permiso \"settings.manage\"","parameters":[{"name":"itemKey","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Comando ejecutado correctamente","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeSuccess"}}}},"400":{"description":"Error de validación o de negocio","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnvelopeError"}}}},"401":{"description":"Falta autenticación, o el token es inválido/expiró/fue revocado"},"403":{"description":"El rol no tiene este permiso, o el módulo está desactivado para el rol"}},"security":[{"bearerAuth":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Cuerpo específico de este comando. Casi todos los comandos de escritura aceptan además un campo \"channel\" (web|telegram|api|n8n) que queda registrado en la auditoría. Ver README.md y backend/src/routes.js para el detalle exacto de campos."}}}}}}}}