{
    "openapi": "3.1.0",
    "info": {
        "title": "Tario API",
        "version": "1.0.0",
        "description": "API de facturación electrónica y contabilidad para Costa Rica. Autenticación con tokens Sanctum (`Authorization: Bearer`) u OAuth 2.1 con PKCE. La empresa se resuelve con el header `X-Tario-Company`, el query `company_id`, o la empresa actual del usuario. Montos siempre en céntimos. Referencia ampliada en docs/API_INTEGRATIONS.md."
    },
    "servers": [
        {
            "url": "https://app.tario.io"
        }
    ],
    "paths": {
        "/api/hacienda-inbox/xml": {
            "post": {
                "summary": "Registrar factura de compra desde un XML",
                "tags": [
                    "Plataforma"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/hacienda/callback": {
            "post": {
                "summary": "Callback asíncrono del API de Hacienda (plataforma)",
                "tags": [
                    "Plataforma"
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/inbound-email/sendgrid": {
            "post": {
                "summary": "Webhook de correo entrante de SendGrid (plataforma)",
                "tags": [
                    "Plataforma"
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/mcp": {
            "post": {
                "summary": "Endpoint MCP (JSON-RPC 2.0, Streamable HTTP)",
                "tags": [
                    "MCP"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/user": {
            "get": {
                "summary": "Usuario autenticado del token",
                "tags": [
                    "General"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/accounts": {
            "get": {
                "summary": "Listar el catálogo de cuentas (paginado, con filtros)",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear una cuenta contable",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/accounts/{account}": {
            "get": {
                "summary": "Consultar una cuenta contable",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "account",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar una cuenta contable",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "account",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/actividades-economicas": {
            "get": {
                "summary": "Catálogo de actividades económicas",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/attachments/{kind}/{attachable}": {
            "get": {
                "summary": "V1 Attachments Index",
                "tags": [
                    "General"
                ],
                "parameters": [
                    {
                        "name": "kind",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachable",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "V1 Attachments Store",
                "tags": [
                    "General"
                ],
                "parameters": [
                    {
                        "name": "kind",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachable",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/attachments/{kind}/{attachable}/{attachment}": {
            "delete": {
                "summary": "V1 Attachments Destroy",
                "tags": [
                    "General"
                ],
                "parameters": [
                    {
                        "name": "kind",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachable",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/attachments/{kind}/{attachable}/{attachment}/download": {
            "get": {
                "summary": "V1 Attachments Download",
                "tags": [
                    "General"
                ],
                "parameters": [
                    {
                        "name": "kind",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachable",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/accounts/{bankAccount}/archive": {
            "post": {
                "summary": "Archivar una cuenta bancaria",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "bankAccount",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/accounts/{bankAccount}/restore": {
            "post": {
                "summary": "Restaurar una cuenta bancaria archivada",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "bankAccount",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports": {
            "get": {
                "summary": "Listar importaciones de estados de cuenta (paginado, con filtros)",
                "tags": [
                    "Bancos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Subir un estado de cuenta bancario (multipart)",
                "tags": [
                    "Bancos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}": {
            "get": {
                "summary": "Consultar una importación con sus líneas, decisiones y emparejamientos",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "delete": {
                "summary": "Eliminar una importación no confirmada",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/accept-gap": {
            "post": {
                "summary": "Aceptar la diferencia de saldo con una justificación",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/commit": {
            "post": {
                "summary": "Confirmar la importación (encola el registro contable)",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/complete-reconciliation": {
            "post": {
                "summary": "Completar la conciliación bancaria formal",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/lines": {
            "post": {
                "summary": "Agregar una línea manual al estado de cuenta",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/rerun-matching": {
            "post": {
                "summary": "Reejecutar el emparejamiento automático de las líneas",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/retry": {
            "post": {
                "summary": "Reintentar el análisis de una importación fallida",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-imports/{import}/rollback": {
            "post": {
                "summary": "Revertir una importación confirmada",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "import",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-lines/bulk-decisions": {
            "post": {
                "summary": "Aplicar decisiones en lote a varias líneas",
                "tags": [
                    "Bancos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-lines/{line}/decision": {
            "put": {
                "summary": "Decidir una línea (asignar documento, categorizar u omitir)",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "line",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/banking/statement-lines/{line}/merchant-rule": {
            "post": {
                "summary": "Crear una regla de comercio a partir de una línea",
                "tags": [
                    "Bancos"
                ],
                "parameters": [
                    {
                        "name": "line",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills": {
            "get": {
                "summary": "Listar facturas de compra (paginado, con filtros)",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear una factura de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/bulk-pay": {
            "post": {
                "summary": "Registrar pagos sobre varias facturas de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/reception/query": {
            "post": {
                "summary": "Consultar en Hacienda los mensajes receptor enviados",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/reception/retry": {
            "post": {
                "summary": "Reintentar mensajes receptor pendientes de respuesta",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/reception/{bill}/download-zip": {
            "get": {
                "summary": "Descargar el ZIP de archivos de una factura recibida",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}": {
            "get": {
                "summary": "Consultar una factura de compra con sus líneas",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar una factura de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}/hacienda/query": {
            "post": {
                "summary": "Consultar en Hacienda el estado de la FEC",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}/hacienda/send": {
            "post": {
                "summary": "Emitir la factura electrónica de compra (FEC) a Hacienda",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}/inventory-assignments": {
            "put": {
                "summary": "Asignar artículos de inventario a las líneas de una compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}/line-validation": {
            "put": {
                "summary": "Validar códigos IVA/CABYS de las líneas de una compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}/payments": {
            "post": {
                "summary": "Registrar un pago sobre una factura de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/bills/{bill}/void": {
            "post": {
                "summary": "Anular una factura de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "bill",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/cabys/search": {
            "get": {
                "summary": "Buscar códigos CABYS por código o descripción",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/cierres/actualizar-retencion-tarjeta": {
            "post": {
                "summary": "Actualizar una retención de tarjeta",
                "tags": [
                    "Cierres fiscales"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/cierres/cerrar-mes": {
            "post": {
                "summary": "Cerrar un mes fiscal",
                "tags": [
                    "Cierres fiscales"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/cierres/lista-cierres": {
            "get": {
                "summary": "Listar cierres fiscales mensuales",
                "tags": [
                    "Cierres fiscales"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/cierres/rectificacion": {
            "post": {
                "summary": "Rectificar un mes cerrado",
                "tags": [
                    "Cierres fiscales"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/cierres/retenciones-tarjeta": {
            "get": {
                "summary": "Listar retenciones de tarjeta",
                "tags": [
                    "Cierres fiscales"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/clients/{client}/statement/email": {
            "post": {
                "summary": "Enviar el estado de cuenta del cliente por correo",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/clients/{client}/statement/export": {
            "get": {
                "summary": "Descargar el estado de cuenta del cliente (CSV)",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "client",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/emitir-factura": {
            "post": {
                "summary": "Emitir una factura de venta ya registrada",
                "tags": [
                    "General"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailDeliveryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/estimates": {
            "get": {
                "summary": "Listar cotizaciones (paginado, con filtros)",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear una cotización",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/estimates/{estimate}": {
            "get": {
                "summary": "Consultar una cotización",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar una cotización",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/estimates/{estimate}/accept": {
            "post": {
                "summary": "Marcar una cotización como aceptada",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/estimates/{estimate}/approve": {
            "post": {
                "summary": "Aprobar una cotización en borrador",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/estimates/{estimate}/convert-to-invoice": {
            "post": {
                "summary": "Convertir una cotización en factura de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/estimates/{estimate}/decline": {
            "post": {
                "summary": "Marcar una cotización como rechazada",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/estimates/{estimate}/mark-sent": {
            "post": {
                "summary": "Marcar una cotización como enviada",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "estimate",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/aceptar": {
            "post": {
                "summary": "Enviar mensaje de aceptación (1/2/3)",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/autorizar-correo": {
            "post": {
                "summary": "Autorizar el envío del mensaje por correo",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/consultar": {
            "get": {
                "summary": "Consultar una factura de compra por clave",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/consultar-hacienda": {
            "get": {
                "summary": "Compras pendientes de respuesta de Hacienda",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/descargar-xml-respuesta/{clave}": {
            "get": {
                "summary": "Descargar el XML de respuesta de Hacienda",
                "tags": [
                    "Facturas de compra"
                ],
                "parameters": [
                    {
                        "name": "clave",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/descargar-xml/{clave}": {
            "get": {
                "summary": "Descargar el XML firmado de la compra",
                "tags": [
                    "Facturas de compra"
                ],
                "parameters": [
                    {
                        "name": "clave",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/lista": {
            "get": {
                "summary": "Listar facturas de compra (paginado)",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/lista-correo": {
            "get": {
                "summary": "Compras en cola de envío de correo",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/lista-no-aceptadas": {
            "get": {
                "summary": "Compras pendientes de aceptación",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/lista-no-validadas": {
            "get": {
                "summary": "Compras pendientes de validación",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/registrar": {
            "post": {
                "summary": "Registrar factura de compra",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-compra/validar": {
            "post": {
                "summary": "Validar códigos IVA/CABYS de las líneas",
                "tags": [
                    "Facturas de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/consultar": {
            "get": {
                "summary": "Consultar una factura de venta por clave",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/facturas-venta/consultar-hacienda": {
            "post": {
                "summary": "Consultar estado en Hacienda (asíncrono)",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "get": {
                "summary": "Facturas pendientes de respuesta de Hacienda",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/descargar-xml-respuesta/{clave}": {
            "get": {
                "summary": "Descargar el XML de respuesta de Hacienda",
                "tags": [
                    "Facturas de venta"
                ],
                "parameters": [
                    {
                        "name": "clave",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/descargar-xml/{clave}": {
            "get": {
                "summary": "Descargar el XML firmado de la factura",
                "tags": [
                    "Facturas de venta"
                ],
                "parameters": [
                    {
                        "name": "clave",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/emitir": {
            "post": {
                "summary": "Registrar y emitir factura de venta a Hacienda",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailDeliveryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/facturas-venta/emitir/n-credito/{clave}": {
            "post": {
                "summary": "Emitir nota de crédito sobre una factura",
                "tags": [
                    "Facturas de venta"
                ],
                "parameters": [
                    {
                        "name": "clave",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/emitir/n-debito/{clave}": {
            "post": {
                "summary": "Emitir nota de débito sobre una factura",
                "tags": [
                    "Facturas de venta"
                ],
                "parameters": [
                    {
                        "name": "clave",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/lista": {
            "get": {
                "summary": "Listar facturas de venta (paginado)",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/facturas-venta/lista-correo": {
            "get": {
                "summary": "Facturas en cola de envío de correo",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/lista-no-validadas": {
            "get": {
                "summary": "Facturas pendientes de validación",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/facturas-venta/reenviar-correo": {
            "post": {
                "summary": "Reenviar el correo de la factura",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailDeliveryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/facturas-venta/registrar": {
            "post": {
                "summary": "Registrar factura de venta (sin emitir)",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailDeliveryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/facturas-venta/validar": {
            "post": {
                "summary": "Validar códigos IVA/CABYS de las líneas",
                "tags": [
                    "Facturas de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/fiscal-periods/close": {
            "post": {
                "summary": "Cerrar un período contable mensual",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/fiscal-periods/close-year": {
            "post": {
                "summary": "Cerrar el año fiscal (asientos de cierre)",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/fiscal-periods/reopen": {
            "post": {
                "summary": "Reabrir un período contable cerrado",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/fiscal-periods/reopen-year": {
            "post": {
                "summary": "Reabrir un año fiscal cerrado (revierte los asientos de cierre)",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/assignments": {
            "post": {
                "summary": "Asignar un artículo de inventario a un empleado",
                "tags": [
                    "Inventario"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/assignments/{assignment}/return": {
            "post": {
                "summary": "Registrar la devolución de un artículo asignado",
                "tags": [
                    "Inventario"
                ],
                "parameters": [
                    {
                        "name": "assignment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/items/{item}/kardex": {
            "get": {
                "summary": "Kardex del artículo (historial con saldo corrido)",
                "tags": [
                    "Inventario"
                ],
                "parameters": [
                    {
                        "name": "item",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/movements": {
            "get": {
                "summary": "Listar movimientos de inventario (paginado, con filtros)",
                "tags": [
                    "Inventario"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Registrar un movimiento de inventario (actualiza existencias)",
                "tags": [
                    "Inventario"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/movements/{movement}": {
            "get": {
                "summary": "Consultar un movimiento de inventario con sus líneas",
                "tags": [
                    "Inventario"
                ],
                "parameters": [
                    {
                        "name": "movement",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/repairs": {
            "post": {
                "summary": "Registrar una reparación de un artículo de inventario",
                "tags": [
                    "Inventario"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/inventory/repairs/{repair}/complete": {
            "post": {
                "summary": "Completar una reparación de inventario",
                "tags": [
                    "Inventario"
                ],
                "parameters": [
                    {
                        "name": "repair",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices": {
            "get": {
                "summary": "Listar facturas de venta (paginado, con filtros)",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "summary": "Crear una factura de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailDeliveryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/invoices/bulk-pay": {
            "post": {
                "summary": "Registrar pagos sobre varias facturas de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}": {
            "get": {
                "summary": "Consultar una factura de venta con sus líneas",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            },
            "put": {
                "summary": "Actualizar una factura de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/EmailDeliveryRequest"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/InvoiceEmailDeliveryFields"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/attachments": {
            "post": {
                "summary": "Adjuntar un archivo a una factura de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/attachments/{attachment}": {
            "delete": {
                "summary": "Quitar un adjunto de una factura de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "attachment",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/email": {
            "post": {
                "summary": "Enviar la factura de venta por correo al cliente",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/notes": {
            "post": {
                "summary": "Crear una nota de crédito o débito sobre una factura",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/payments": {
            "post": {
                "summary": "Registrar un pago sobre una factura de venta",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/receipts": {
            "post": {
                "summary": "Emitir un recibo electrónico de pago (REP)",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/invoices/{invoice}/void": {
            "post": {
                "summary": "Anular una factura de venta (opcionalmente con nota de crédito)",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "invoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/openapi.json": {
            "get": {
                "summary": "Especificación OpenAPI de esta API",
                "tags": [
                    "General"
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/purchase-orders": {
            "get": {
                "summary": "Listar órdenes de compra (paginado, con filtros)",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear una orden de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/purchase-orders/{purchaseOrder}": {
            "get": {
                "summary": "Consultar una orden de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "purchaseOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar una orden de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "purchaseOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/purchase-orders/{purchaseOrder}/associate-bill": {
            "post": {
                "summary": "Asociar una factura de compra existente y cerrar la orden",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "purchaseOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/purchase-orders/{purchaseOrder}/cancel": {
            "post": {
                "summary": "Cancelar una orden de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "purchaseOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/purchase-orders/{purchaseOrder}/close": {
            "post": {
                "summary": "Cerrar una orden de compra",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "purchaseOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/purchase-orders/{purchaseOrder}/convert-to-bill": {
            "post": {
                "summary": "Convertir la orden en factura de compra (FEC)",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "purchaseOrder",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/quick-products": {
            "post": {
                "summary": "Crear un producto rápido desde el editor de documentos",
                "tags": [
                    "Recursos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices": {
            "get": {
                "summary": "Listar facturas recurrentes (paginado, con filtros)",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear una factura recurrente",
                "tags": [
                    "Operaciones de venta"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices/{recurringInvoice}": {
            "get": {
                "summary": "Consultar una factura recurrente",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar una factura recurrente",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices/{recurringInvoice}/approve": {
            "post": {
                "summary": "Aprobar y activar una factura recurrente",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices/{recurringInvoice}/end": {
            "post": {
                "summary": "Finalizar una factura recurrente",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices/{recurringInvoice}/generate": {
            "post": {
                "summary": "Generar la siguiente factura de la serie",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices/{recurringInvoice}/pause": {
            "post": {
                "summary": "Pausar una factura recurrente",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/recurring-invoices/{recurringInvoice}/resume": {
            "post": {
                "summary": "Reanudar una factura recurrente pausada",
                "tags": [
                    "Operaciones de venta"
                ],
                "parameters": [
                    {
                        "name": "recurringInvoice",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reportes/borrador-iva": {
            "get": {
                "summary": "Borrador de la declaración de IVA",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reportes/detalle-credito": {
            "get": {
                "summary": "Detalle de crédito fiscal",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reportes/detalle-debito": {
            "get": {
                "summary": "Detalle de débito fiscal",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reportes/libro-compras": {
            "get": {
                "summary": "Libro de compras",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reportes/libro-ventas": {
            "get": {
                "summary": "Libro de ventas",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reports/books/{book}/export": {
            "get": {
                "summary": "Exportar el libro de ventas o compras (CSV, XLSX o PDF)",
                "tags": [
                    "Reportes"
                ],
                "parameters": [
                    {
                        "name": "book",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reports/d104/export": {
            "get": {
                "summary": "Exportar el XML de la declaración D-104",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reports/d151/export": {
            "get": {
                "summary": "Exportar la declaración informativa D-151 (CSV)",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reports/financial/{report}/export": {
            "get": {
                "summary": "Exportar un estado financiero (CSV, XLSX o PDF)",
                "tags": [
                    "Reportes"
                ],
                "parameters": [
                    {
                        "name": "report",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/reports/model-270/export": {
            "get": {
                "summary": "Exportar la declaración informativa modelo 270 (CSV)",
                "tags": [
                    "Reportes"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/resources/{screen}": {
            "get": {
                "summary": "Listar recursos de un tipo (paginado, con búsqueda)",
                "tags": [
                    "Recursos"
                ],
                "parameters": [
                    {
                        "name": "screen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear un recurso (clientes, proveedores, productos, inventario)",
                "tags": [
                    "Recursos"
                ],
                "parameters": [
                    {
                        "name": "screen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/resources/{screen}/{record}": {
            "get": {
                "summary": "Consultar un recurso",
                "tags": [
                    "Recursos"
                ],
                "parameters": [
                    {
                        "name": "screen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "record",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar un recurso",
                "tags": [
                    "Recursos"
                ],
                "parameters": [
                    {
                        "name": "screen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "record",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "delete": {
                "summary": "Eliminar un recurso",
                "tags": [
                    "Recursos"
                ],
                "parameters": [
                    {
                        "name": "screen",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "record",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/transactions": {
            "get": {
                "summary": "Listar movimientos y asientos contables (paginado, con filtros)",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear un movimiento o asiento contable",
                "tags": [
                    "Contabilidad"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/transactions/{transaction}": {
            "get": {
                "summary": "Consultar un movimiento contable con sus líneas",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "transaction",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "put": {
                "summary": "Actualizar un movimiento contable en borrador",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "transaction",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "delete": {
                "summary": "Eliminar un movimiento contable en borrador",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "transaction",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/transactions/{transaction}/post-to-ledger": {
            "post": {
                "summary": "Mayorizar un asiento en borrador",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "transaction",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/transactions/{transaction}/reverse": {
            "post": {
                "summary": "Revertir un movimiento contable mayorizado",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "transaction",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/transactions/{transaction}/void": {
            "post": {
                "summary": "Anular un movimiento contable (reversa y marca de anulación)",
                "tags": [
                    "Contabilidad"
                ],
                "parameters": [
                    {
                        "name": "transaction",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/actividad-comercial": {
            "get": {
                "summary": "Catálogo de actividad comercial",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/actividad-comerciales": {
            "get": {
                "summary": "Catálogo de actividades económicas (legado)",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/canton": {
            "get": {
                "summary": "Cantones",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/categorias-hacienda": {
            "get": {
                "summary": "Categorías de producto de Hacienda",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/categorias-hacienda/{code}": {
            "get": {
                "summary": "Categorías para un código CABYS",
                "tags": [
                    "Catálogos"
                ],
                "parameters": [
                    {
                        "name": "code",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/codigos-compra": {
            "get": {
                "summary": "Códigos IVA para compras",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/codigos-venta": {
            "get": {
                "summary": "Códigos IVA para ventas",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/distrito": {
            "get": {
                "summary": "Distritos",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/pais": {
            "get": {
                "summary": "Países",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/provincias": {
            "get": {
                "summary": "Provincias",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/utilidades/unidades-medicion": {
            "get": {
                "summary": "Unidades de medida",
                "tags": [
                    "Catálogos"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/vendors/{vendor}/statement/email": {
            "post": {
                "summary": "Enviar el estado de cuenta del proveedor por correo",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "vendor",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/vendors/{vendor}/statement/export": {
            "get": {
                "summary": "Descargar el estado de cuenta del proveedor (CSV)",
                "tags": [
                    "Operaciones de compra"
                ],
                "parameters": [
                    {
                        "name": "vendor",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/webhooks": {
            "get": {
                "summary": "Listar suscripciones de webhooks",
                "tags": [
                    "Webhooks"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "post": {
                "summary": "Crear suscripción de webhook (el secreto se muestra una vez)",
                "tags": [
                    "Webhooks"
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/webhooks/{webhook}": {
            "patch": {
                "summary": "Activar o desactivar una suscripción de webhook",
                "tags": [
                    "Webhooks"
                ],
                "parameters": [
                    {
                        "name": "webhook",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            },
            "delete": {
                "summary": "Eliminar suscripción de webhook",
                "tags": [
                    "Webhooks"
                ],
                "parameters": [
                    {
                        "name": "webhook",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/v1/webhooks/{webhook}/test": {
            "post": {
                "summary": "Encolar un evento de prueba (ping) firmado a la suscripción",
                "tags": [
                    "Webhooks"
                ],
                "parameters": [
                    {
                        "name": "webhook",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "security": [
                    {
                        "bearerAuth": []
                    },
                    {
                        "oauth2": [
                            "read"
                        ]
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/api/version": {
            "get": {
                "summary": "Commit y fecha de build de la imagen desplegada",
                "tags": [
                    "General"
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "description": "Token de acceso personal de Sanctum (Configuración → API tokens)."
            },
            "oauth2": {
                "type": "oauth2",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "https://app.tario.io/oauth/authorize",
                        "tokenUrl": "https://app.tario.io/oauth/token",
                        "refreshUrl": "https://app.tario.io/oauth/token",
                        "scopes": {
                            "read": "Lectura de reportes y catálogos"
                        }
                    }
                }
            }
        },
        "parameters": {
            "TarioCompany": {
                "name": "X-Tario-Company",
                "in": "header",
                "required": false,
                "description": "Id de la empresa cuando el usuario pertenece a varias.",
                "schema": {
                    "type": "integer"
                }
            }
        },
        "schemas": {
            "EmailDeliveryMode": {
                "type": "string",
                "enum": [
                    "full",
                    "xml_only",
                    "pdf_only",
                    "none"
                ],
                "description": "Qué lleva el correo que Tario envía al receptor cuando Hacienda acepta el comprobante: `full` (PDF + XML firmado + XML de respuesta), `xml_only` (solo los dos XML), `pdf_only` (solo el PDF) o `none` (Tario no envía correo; el integrador entrega). Solo por API: en Costa Rica enviar el PDF y los XML no es opcional, así que ninguna pantalla de Tario ofrece este campo (siempre `full`) y guardar desde la interfaz no cambia lo que fijó la API. Existe para el integrador que se encarga del envío por aparte; se fija por factura (este campo) o por cliente (`email_delivery` en `/api/v1/resources/sales.clients`). Se aceptan los alias en español `completo`, `solo_xml`, `solo_pdf` y `ninguno`. Orden de resolución: valor de la solicitud > valor del cliente > valor por defecto de la empresa > `full`. No cambia el XML: el correo del receptor sigue en el comprobante."
            },
            "EmailDeliveryRequest": {
                "type": "object",
                "description": "Campos de entrega por correo (el resto del cuerpo se documenta en docs/API_INTEGRATIONS.md).",
                "additionalProperties": true,
                "properties": {
                    "email_delivery": {
                        "$ref": "#/components/schemas/EmailDeliveryMode"
                    },
                    "entregaCorreo": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/EmailDeliveryMode"
                            }
                        ],
                        "description": "Alias en español de `email_delivery` (también `entrega_correo`)."
                    }
                }
            },
            "InvoiceEmailDeliveryFields": {
                "type": "object",
                "description": "Campos de entrega por correo presentes en cada factura de venta devuelta (además de los demás campos del comprobante).",
                "additionalProperties": true,
                "properties": {
                    "email_delivery": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/EmailDeliveryMode"
                            }
                        ],
                        "description": "Modo efectivo, ya resuelto."
                    },
                    "email_delivery_source": {
                        "type": "string",
                        "enum": [
                            "request",
                            "client",
                            "company",
                            "default"
                        ],
                        "description": "De dónde salió el modo efectivo: la solicitud (valor guardado en la factura), el cliente, la empresa o el valor por defecto."
                    }
                }
            }
        }
    }
}
