{
    "openapi": "3.0.0",
    "info": {
        "title": "ISURGOB API",
        "description": "Documentación de la API de ISURGOB",
        "version": "1.0.0"
    },
    "servers": [
        {
            "url": "{schema}://{host}",
            "description": "API base",
            "variables": {
                "schema": {
                    "enum": [
                        "http",
                        "https"
                    ],
                    "default": "http"
                },
                "host": {
                    "default": "localhost"
                }
            }
        },
        {
            "url": "https://api.isurgob.net",
            "description": "Producción"
        },
        {
            "url": "http://localhost",
            "description": "Local"
        }
    ],
    "paths": {
        "/api/login": {
            "post": {
                "tags": [
                    "Autenticación"
                ],
                "summary": "Login de usuario",
                "description": "Realiza el login y devuelve un access token Sanctum.",
                "operationId": "a3b306d14572d1f4bd6c064b3233e7b8",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string",
                                        "example": "admin@example.com"
                                    },
                                    "password": {
                                        "type": "string",
                                        "example": "secret"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Token generado",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "access_token": {
                                            "type": "string"
                                        },
                                        "token_type": {
                                            "type": "string",
                                            "example": "Bearer"
                                        },
                                        "expires_in": {
                                            "type": "integer",
                                            "example": 0
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Credenciales inválidas"
                    }
                }
            }
        },
        "/api/ext/caja/estadisticas": {
            "get": {
                "tags": [
                    "Caja"
                ],
                "summary": "Obtener estadísticas de caja",
                "operationId": "4e376203b0305a4037ebe9ee64f84027",
                "parameters": [
                    {
                        "name": "fecha_desde",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "fecha_hasta",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "trib_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "teso_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Estadísticas recuperadas"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/caja/{caja_id}/estadisticas": {
            "get": {
                "tags": [
                    "Caja"
                ],
                "summary": "Obtener estadísticas de una caja específica",
                "operationId": "d8140c983de7c6a2663a348c56a20034",
                "parameters": [
                    {
                        "name": "caja_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "fecha_desde",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "fecha_hasta",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "trib_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "teso_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Estadísticas recuperadas"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/caja/estadisticas/diaria": {
            "get": {
                "tags": [
                    "Caja"
                ],
                "summary": "Obtener estadísticas diarias de caja",
                "operationId": "6cc69c274c9ed69a06dffea42a47b620",
                "parameters": [
                    {
                        "name": "fecha_desde",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "fecha_hasta",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "trib_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "teso_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Estadísticas diarias recuperadas"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/caja/{caja_id}/estadisticas/diaria": {
            "get": {
                "tags": [
                    "Caja"
                ],
                "summary": "Obtener estadísticas diarias de una caja específica",
                "operationId": "9e0d2bb5a71d4e1a880c2fda59ca24cd",
                "parameters": [
                    {
                        "name": "caja_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "fecha_desde",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "fecha_hasta",
                        "in": "query",
                        "description": "Formato de fecha ISO 8601 (YYYY-MM-DD)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "trib_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "teso_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Estadísticas diarias recuperadas"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/caja": {
            "get": {
                "tags": [
                    "Caja"
                ],
                "summary": "Obtener cajas activas",
                "operationId": "5ce72d985d486114721afe58f5d71b45",
                "responses": {
                    "200": {
                        "description": "Cajas recuperadas correctamente"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/objeto/tipos": {
            "get": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Listar tipos de imponibles activos",
                "operationId": "3a654da912116fabfd3aff046a051c5e",
                "responses": {
                    "200": {
                        "description": "Listado de tipos de imponibles",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "properties": {
                                                "messages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "success": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "integer"
                                                    },
                                                    "nombre": {
                                                        "type": "string"
                                                    },
                                                    "nombre_redu": {
                                                        "type": "string"
                                                    },
                                                    "letra": {
                                                        "type": "string"
                                                    },
                                                    "acc_det": {
                                                        "type": "string"
                                                    },
                                                    "obj_dato_det": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/objeto": {
            "get": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Buscar objetos",
                "operationId": "146d95f1910174c7bca6cbbdd8f2b5e1",
                "parameters": [
                    {
                        "name": "tobj",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "num",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "nombre",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "obj_dato",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "est",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Lista paginada",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "properties": {
                                                "messages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "success": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "obj_id": {
                                                        "type": "string"
                                                    },
                                                    "tobj": {
                                                        "type": "string"
                                                    },
                                                    "num": {
                                                        "type": "string"
                                                    },
                                                    "nombre": {
                                                        "type": "string"
                                                    },
                                                    "obj_dato": {
                                                        "type": "string"
                                                    },
                                                    "est": {
                                                        "type": "string"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Crear objeto",
                "operationId": "04e7db60d099c3aebbc45fe17c4ccde3",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "obj_id"
                                ],
                                "properties": {
                                    "obj_id": {
                                        "type": "string"
                                    },
                                    "tobj": {
                                        "type": "string"
                                    },
                                    "num": {
                                        "type": "string"
                                    },
                                    "nombre": {
                                        "type": "string"
                                    },
                                    "obj_dato": {
                                        "type": "string"
                                    },
                                    "est": {
                                        "type": "string"
                                    },
                                    "distrib": {
                                        "type": "string"
                                    },
                                    "tdistrib": {
                                        "type": "string"
                                    },
                                    "obs": {
                                        "type": "string"
                                    },
                                    "objunifica": {
                                        "type": "string"
                                    },
                                    "vigencia": {
                                        "type": "string"
                                    },
                                    "claveweb": {
                                        "type": "string"
                                    },
                                    "fchalta": {
                                        "type": "string"
                                    },
                                    "usralta": {
                                        "type": "string"
                                    },
                                    "fchbaja": {
                                        "type": "string"
                                    },
                                    "usrbaja": {
                                        "type": "string"
                                    },
                                    "tbaja": {
                                        "type": "string"
                                    },
                                    "fchmod": {
                                        "type": "string"
                                    },
                                    "usrmod": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Objeto creado"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/objeto/{obj_id}": {
            "get": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Obtener un objeto por ID",
                "operationId": "5221b83b50312cc841be3f4160c97798",
                "parameters": [
                    {
                        "name": "obj_id",
                        "in": "path",
                        "description": "Identificador del objeto",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Objeto encontrado",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "properties": {
                                                "messages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "success": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "data": {
                                            "properties": {
                                                "obj_id": {
                                                    "type": "string"
                                                },
                                                "tobj": {
                                                    "type": "string"
                                                },
                                                "num": {
                                                    "type": "string"
                                                },
                                                "nombre": {
                                                    "type": "string"
                                                },
                                                "obj_dato": {
                                                    "type": "string"
                                                },
                                                "est": {
                                                    "type": "string"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "No encontrado"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Actualizar objeto",
                "operationId": "c64a0a27a7725678a0872d8bfeb5f499",
                "parameters": [
                    {
                        "name": "obj_id",
                        "in": "path",
                        "description": "Identificador del objeto",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "tobj": {
                                        "type": "string"
                                    },
                                    "num": {
                                        "type": "string"
                                    },
                                    "nombre": {
                                        "type": "string"
                                    },
                                    "obj_dato": {
                                        "type": "string"
                                    },
                                    "est": {
                                        "type": "string"
                                    },
                                    "distrib": {
                                        "type": "string"
                                    },
                                    "tdistrib": {
                                        "type": "string"
                                    },
                                    "obs": {
                                        "type": "string"
                                    },
                                    "objunifica": {
                                        "type": "string"
                                    },
                                    "vigencia": {
                                        "type": "string"
                                    },
                                    "claveweb": {
                                        "type": "string"
                                    },
                                    "fchalta": {
                                        "type": "string"
                                    },
                                    "usralta": {
                                        "type": "string"
                                    },
                                    "fchbaja": {
                                        "type": "string"
                                    },
                                    "usrbaja": {
                                        "type": "string"
                                    },
                                    "tbaja": {
                                        "type": "string"
                                    },
                                    "fchmod": {
                                        "type": "string"
                                    },
                                    "usrmod": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Objeto actualizado"
                    },
                    "404": {
                        "description": "No encontrado"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Eliminar objeto",
                "operationId": "37064c95fa4030266a2ceb3ec2f83c7c",
                "parameters": [
                    {
                        "name": "obj_id",
                        "in": "path",
                        "description": "Identificador del objeto",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Objeto eliminado"
                    },
                    "404": {
                        "description": "No encontrado"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/objeto/deuda": {
            "get": {
                "tags": [
                    "Objeto"
                ],
                "summary": "Consultar deuda consolidada de un objeto",
                "description": "Retorna la cuenta corriente consolidada del objeto identificado, para el período completo (desde el inicio hasta el período actual).",
                "operationId": "9b517a4878e511fde4708023c8b5de4a",
                "parameters": [
                    {
                        "name": "tipo",
                        "in": "query",
                        "description": "Tipo de objeto/imponible (ver GET /api/ext/objeto/tipos). Valores admitidos: 1, 2, 4, 5, 6, 7, 8, 9, 10.",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "enum": [
                                1,
                                2,
                                4,
                                5,
                                6,
                                7,
                                8,
                                9,
                                10
                            ],
                            "example": 1
                        }
                    },
                    {
                        "name": "identificador",
                        "in": "query",
                        "description": "Identificador del objeto (1 a 32 caracteres)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "maxLength": 32,
                            "minLength": 1,
                            "example": "00012345"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deuda consolidada del objeto",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "properties": {
                                                "messages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "success": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "data": {
                                            "description": "Detalle de la cuenta corriente consolidada (estructura provista por el procedimiento almacenado de cuenta corriente).",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "No se encontraron datos para el objeto indicado"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/pago": {
            "post": {
                "tags": [
                    "Pago"
                ],
                "summary": "Crear intención de pago",
                "description": "Crea una intención de pago sobre una o más cuentas corrientes (`ctacte_id`) de un mismo contribuyente.\n\nSi se incluyen varios períodos, la base los consolida en una facilidad. El importe a cobrar es `data.monto`.\n\n**Flujo completo para el agente**\n\n1. Consultar la deuda (`GET /api/ext/objeto/deuda` o `GET /api/ext/persona/{cuit}/deuda`) y tomar los `ctacte_id` a cancelar.\n2. Crear la intención de pago con este endpoint y cobrar el `monto` devuelto.\n3. Imputar el cobro con `POST /api/ext/pago/{pag_id}/imputar`.\n\nEn cualquier momento, `GET /api/ext/pago/{pag_id}` devuelve el estado de la intención.\n\n**Permisos:** `pago.create` (este endpoint), `pago.show` (consultar) y `pago.imputar` (imputar).",
                "operationId": "0e45abb3aa82017293f4b58bb947c1fa",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "ctacte_id"
                                ],
                                "properties": {
                                    "ctacte_id": {
                                        "description": "Cuentas corrientes a pagar, sin repetir y del mismo contribuyente (se obtienen de GET /api/ext/objeto/deuda o GET /api/ext/persona/{cuit}/deuda)",
                                        "type": "array",
                                        "items": {
                                            "type": "integer",
                                            "example": 1234567
                                        },
                                        "maxItems": 100,
                                        "minItems": 1
                                    },
                                    "fchvenc": {
                                        "description": "Fecha de vencimiento de la intención (ISO 8601: YYYY-MM-DD), hoy o posterior. Si se omite o es hoy y hay períodos no vencidos, vence en el vencimiento más próximo de esos períodos.",
                                        "type": "string",
                                        "format": "date",
                                        "example": "2026-10-10",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Intención de pago creada",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PagoResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No autenticado"
                    },
                    "403": {
                        "description": "Sin permiso pago.create"
                    },
                    "422": {
                        "description": "Datos inválidos, cuentas de distintos contribuyentes o rechazo de la base",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/ApiValidationError"
                                        },
                                        {
                                            "$ref": "#/components/schemas/ApiError"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error interno",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiError"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/pago/{pag_id}": {
            "get": {
                "tags": [
                    "Pago"
                ],
                "summary": "Consultar intención de pago",
                "description": "Devuelve el detalle y el estado de una intención de pago.\n\n**Estados:** `P` pendiente, `A` aprobado, `V` aprobado pendiente de acreditación, `E` rechazado / error, `R` revertido (anulado o devuelto).\n\n**Permiso:** `pago.show`.",
                "operationId": "3ce87f7dd062e5644a7831204999d60d",
                "parameters": [
                    {
                        "name": "pag_id",
                        "in": "path",
                        "description": "Identificador de la intención de pago (devuelto por POST /api/ext/pago)",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 184523
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Intención de pago",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PagoResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No autenticado"
                    },
                    "403": {
                        "description": "Sin permiso pago.show"
                    },
                    "404": {
                        "description": "Intención de pago no encontrada",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiError"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error interno",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiError"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/pago/{pag_id}/imputar": {
            "post": {
                "tags": [
                    "Pago"
                ],
                "summary": "Imputar intención de pago",
                "description": "Informa el resultado del cobro según lo notifique la pasarela.\n\n- **A** (approved / paid): registra el pago en la caja indicada y devuelve el ticket. `caja_id` es obligatorio.\n- **E** (rejected / cancelled / expired): marca la intención como rechazada. No aplica a pagos ya imputados.\n- **R** (refunded / charged_back / voided / anulado): si el pago estaba aprobado revierte la operación de caja y lo deja en `R`; si todavía no estaba imputado lo marca rechazado.\n\nEs seguro reintentar: si el pago ya estaba en el estado pedido se responde 200 con `idempotente=true` sin volver a procesarlo.\n\n**Permiso:** `pago.imputar`.",
                "operationId": "3347080ffb39348a436ec44043cc6d4b",
                "parameters": [
                    {
                        "name": "pag_id",
                        "in": "path",
                        "description": "Identificador de la intención de pago",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "example": 184523
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "est"
                                ],
                                "properties": {
                                    "caja_id": {
                                        "description": "Código de caja activa del agente que cobró (ver GET /api/ext/caja). Obligatorio con est=A; no se usa con E ni R.",
                                        "type": "integer",
                                        "example": 195,
                                        "nullable": true
                                    },
                                    "est": {
                                        "description": "Resultado del cobro: A aprobado, E rechazado, R anulado / devuelto",
                                        "type": "string",
                                        "enum": [
                                            "A",
                                            "E",
                                            "R"
                                        ],
                                        "example": "A"
                                    },
                                    "comprob": {
                                        "description": "Comprobante / id de transacción del agente, para conciliación (máx. 15 caracteres)",
                                        "type": "string",
                                        "maxLength": 15,
                                        "example": "TRX-000123",
                                        "nullable": true
                                    },
                                    "obs": {
                                        "description": "Observaciones; en un rechazo o anulación se guarda como motivo (máx. 15 caracteres)",
                                        "type": "string",
                                        "maxLength": 15,
                                        "example": "Cobro ventanilla",
                                        "nullable": true
                                    },
                                    "fchpago": {
                                        "description": "Fecha o fecha y hora del cobro (ISO 8601: YYYY-MM-DD o YYYY-MM-DDTHH:MM:SS±HH:MM; también se acepta Z para UTC). Sin offset se interpreta como hora argentina. No puede ser posterior al momento actual. Por defecto, hoy. Se registra sólo la fecha del cobro en hora argentina: la hora no se guarda.",
                                        "type": "string",
                                        "format": "date-time",
                                        "example": "2026-10-07T22:30:00-03:00",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Pago imputado o rechazado",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PagoImputacionResponse"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "No autenticado"
                    },
                    "403": {
                        "description": "Sin permiso pago.imputar"
                    },
                    "404": {
                        "description": "Intención de pago no encontrada",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiError"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "Conflicto de estado: rechazar (E) un pago ya imputado, aprobar o rechazar un pago revertido, revertir (R) un pago en V, o un pago sin ticket u operación de caja que requiere revisión manual",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiError"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Datos inválidos o rechazo de la base",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "oneOf": [
                                        {
                                            "$ref": "#/components/schemas/ApiValidationError"
                                        },
                                        {
                                            "$ref": "#/components/schemas/ApiError"
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error interno",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ApiError"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/persona/{cuit}/deuda": {
            "get": {
                "tags": [
                    "Persona"
                ],
                "summary": "Consultar deuda de una persona por CUIT",
                "description": "Retorna la cuenta corriente consolidada de la persona identificada por su CUIT, para el período completo (desde el inicio hasta el período actual).",
                "operationId": "eae78daf67ba98e1a7d92085f8be2ff1",
                "parameters": [
                    {
                        "name": "cuit",
                        "in": "path",
                        "description": "CUIT de la persona (se admiten guiones; se normaliza a sólo dígitos)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "example": "20123456789"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deuda consolidada de la persona",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "properties": {
                                                "messages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "success": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "data": {
                                            "description": "Detalle de la cuenta corriente consolidada (estructura provista por el procedimiento almacenado de cuenta corriente).",
                                            "type": "array",
                                            "items": {
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "No se encontraron datos para el CUIT indicado"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar proveedores (paginado)",
                "operationId": "49e8c556996414d21a08668ed3a8ddca",
                "parameters": [
                    {
                        "name": "cuit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "nombre",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "contacto",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "tliq",
                        "in": "query",
                        "description": "Tipo de liquidación (código, ej: LO)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "maxLength": 2
                        }
                    },
                    {
                        "name": "tprov",
                        "in": "query",
                        "description": "Tipo de proveedor (código, ej: J)",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "maxLength": 1
                        }
                    },
                    {
                        "name": "est",
                        "in": "query",
                        "description": "Filtra por código de estado del proveedor (ver GET /api/ext/proveedores/estados). Sin este parámetro se listan todos los estados.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "maximum": 100,
                            "minimum": 1
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "minimum": 1
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Proveedores recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "properties": {
                                                "data": {
                                                    "type": "array",
                                                    "items": {
                                                        "properties": {
                                                            "prov_id": {
                                                                "type": "integer"
                                                            },
                                                            "obj_id": {
                                                                "type": "integer"
                                                            },
                                                            "cuit": {
                                                                "type": "string"
                                                            },
                                                            "nombre": {
                                                                "type": "string"
                                                            },
                                                            "tliq": {
                                                                "type": "string"
                                                            },
                                                            "tprov": {
                                                                "type": "string"
                                                            },
                                                            "est": {
                                                                "description": "Código de estado (ver GET /api/ext/proveedores/estados)",
                                                                "type": "string"
                                                            },
                                                            "activo": {
                                                                "description": "Derivado: true si est != 'B'",
                                                                "type": "boolean"
                                                            }
                                                        },
                                                        "type": "object"
                                                    }
                                                },
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "type": "object"
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los proveedores"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "post": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Crear proveedor",
                "operationId": "ee129dad3146e68f9ca7cf625b30813c",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "required": [
                                    "cuit",
                                    "nombre",
                                    "tliq",
                                    "tprov"
                                ],
                                "properties": {
                                    "prov_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "cuit": {
                                        "type": "string",
                                        "example": "20300111223"
                                    },
                                    "nombre": {
                                        "type": "string",
                                        "example": "Proveedor Demo SA"
                                    },
                                    "tipo_persona": {
                                        "description": "Código de tipo de persona (ver GET /tipos-persona)",
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "tipo_iva": {
                                        "description": "Código de situación IVA (ver GET /tipos-iva)",
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "tliq": {
                                        "description": "Código de tipo de liquidación (ver GET /tipos-liquidacion)",
                                        "type": "string",
                                        "example": "LO"
                                    },
                                    "tprov": {
                                        "description": "Código de tipo de proveedor (ver GET /tipos-proveedor)",
                                        "type": "string",
                                        "example": "J"
                                    },
                                    "capitaldeclarado": {
                                        "type": "number",
                                        "format": "float",
                                        "nullable": true
                                    },
                                    "cantpersonal": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "rf": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "especialidad": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "antecedentes": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "contacto": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "web": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "lic": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "est": {
                                        "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                        "type": "string",
                                        "example": "A",
                                        "nullable": true
                                    },
                                    "obs": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "fchconstitucion": {
                                        "description": "Fecha de constitución (ISO 8601: YYYY-MM-DD)",
                                        "type": "string",
                                        "format": "date",
                                        "example": "2020-03-15",
                                        "nullable": true
                                    },
                                    "fchvenc": {
                                        "description": "Fecha de vencimiento de habilitación (ISO 8601: YYYY-MM-DD)",
                                        "type": "string",
                                        "format": "date",
                                        "example": "2025-12-31",
                                        "nullable": true
                                    },
                                    "ali": {
                                        "type": "number",
                                        "format": "float",
                                        "nullable": true
                                    },
                                    "direccion": {
                                        "description": "Domicilio legal de la persona (razón social / contribuyente). Corresponde al domicilio fiscal o legal del titular del CUIT.",
                                        "properties": {
                                            "nomcalle": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "puerta": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "piso": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "dpto": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "loc_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "cp": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "barr_id": {
                                                "type": "integer",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object",
                                        "nullable": true
                                    },
                                    "rubros": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "cod": {
                                                    "type": "integer"
                                                },
                                                "nombre": {
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "inscripciones": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "tipo": {
                                                    "description": "Código de tipo de inscripción (ver GET /tipos-inscripcion)",
                                                    "type": "string"
                                                },
                                                "fecha": {
                                                    "description": "Fecha de inscripción (ISO 8601: YYYY-MM-DD)",
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2023-06-01",
                                                    "nullable": true
                                                },
                                                "fchvisa": {
                                                    "description": "Fecha de visado (ISO 8601: YYYY-MM-DD)",
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2023-06-15",
                                                    "nullable": true
                                                },
                                                "fchvenc": {
                                                    "description": "Fecha de vencimiento de inscripción (ISO 8601: YYYY-MM-DD)",
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2025-12-31",
                                                    "nullable": true
                                                },
                                                "expe": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "detalle": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "est": {
                                                    "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "cuentas": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "tcbu": {
                                                    "description": "Código de tipo de CBU (ver GET /tipos-cbu)",
                                                    "type": "integer"
                                                },
                                                "cbu": {
                                                    "type": "string"
                                                },
                                                "titular": {
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "socios": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "cuit": {
                                                    "type": "string"
                                                },
                                                "nombre": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "porc": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "maximum": 100,
                                                    "minimum": 0
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "ute": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "cuit": {
                                                    "type": "string",
                                                    "maxLength": 11
                                                },
                                                "porc": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "maximum": 100,
                                                    "minimum": 0,
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "embargos": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "temb": {
                                                    "description": "Código de tipo de embargo (ver GET /tipos-embargo)",
                                                    "type": "string"
                                                },
                                                "det": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "porc": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "maximum": 100,
                                                    "minimum": 0,
                                                    "nullable": true
                                                },
                                                "tcbu": {
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "cbu": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "titular": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "est": {
                                                    "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "contactos": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "det": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "tel": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "mail": {
                                                    "type": "string",
                                                    "format": "email",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "domicilio_proveedor": {
                                        "description": "Domicilio operativo del proveedor (depósito, sede comercial, etc.). Es independiente del domicilio legal de la persona (`direccion`) y puede ser distinto de éste.",
                                        "properties": {
                                            "loc_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "cp": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "barr_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "calle_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "nomcalle": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "puerta": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "det": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "piso": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "dpto": {
                                                "type": "string",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Proveedor creado correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProveedorResponse"
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "Error de validación o negocio"
                    },
                    "500": {
                        "description": "No se pudo crear el proveedor"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/{prov_id}": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Obtener proveedor por ID",
                "operationId": "108c1b57148f205e01c7021e745cd2e1",
                "parameters": [
                    {
                        "name": "prov_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Proveedor recuperado correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProveedorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Proveedor no encontrado"
                    },
                    "500": {
                        "description": "No se pudo recuperar el proveedor"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "put": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Actualizar proveedor",
                "operationId": "8dccc019b427d57305887985aab86a23",
                "parameters": [
                    {
                        "name": "prov_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "cuit": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "nombre": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "tipo_persona": {
                                        "description": "Código de tipo de persona (ver GET /tipos-persona)",
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "tipo_iva": {
                                        "description": "Código de situación IVA (ver GET /tipos-iva)",
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "tliq": {
                                        "description": "Código de tipo de liquidación (ver GET /tipos-liquidacion)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "tprov": {
                                        "description": "Código de tipo de proveedor (ver GET /tipos-proveedor)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "capitaldeclarado": {
                                        "type": "number",
                                        "format": "float",
                                        "nullable": true
                                    },
                                    "cantpersonal": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "rf": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "especialidad": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "antecedentes": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "contacto": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "web": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "lic": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "est": {
                                        "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "obs": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "fchconstitucion": {
                                        "description": "Fecha de constitución (ISO 8601: YYYY-MM-DD)",
                                        "type": "string",
                                        "format": "date",
                                        "example": "2020-03-15",
                                        "nullable": true
                                    },
                                    "fchvenc": {
                                        "description": "Fecha de vencimiento de habilitación (ISO 8601: YYYY-MM-DD)",
                                        "type": "string",
                                        "format": "date",
                                        "example": "2025-12-31",
                                        "nullable": true
                                    },
                                    "ali": {
                                        "type": "number",
                                        "format": "float",
                                        "nullable": true
                                    },
                                    "direccion": {
                                        "description": "Domicilio legal de la persona (razón social / contribuyente). Se almacena en tabla `domi` con torigen='OBJ'. Corresponde al domicilio fiscal o legal del titular del CUIT.",
                                        "properties": {
                                            "nomcalle": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "puerta": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "piso": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "dpto": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "loc_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "cp": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "barr_id": {
                                                "type": "integer",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object",
                                        "nullable": true
                                    },
                                    "rubros": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "cod": {
                                                    "type": "integer"
                                                },
                                                "nombre": {
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "inscripciones": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "tipo": {
                                                    "description": "Código de tipo de inscripción (ver GET /tipos-inscripcion)",
                                                    "type": "string"
                                                },
                                                "fecha": {
                                                    "description": "Fecha de inscripción (ISO 8601: YYYY-MM-DD)",
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2023-06-01",
                                                    "nullable": true
                                                },
                                                "fchvisa": {
                                                    "description": "Fecha de visado (ISO 8601: YYYY-MM-DD)",
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2023-06-15",
                                                    "nullable": true
                                                },
                                                "fchvenc": {
                                                    "description": "Fecha de vencimiento de inscripción (ISO 8601: YYYY-MM-DD)",
                                                    "type": "string",
                                                    "format": "date",
                                                    "example": "2025-12-31",
                                                    "nullable": true
                                                },
                                                "expe": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "detalle": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "est": {
                                                    "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "cuentas": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "tcbu": {
                                                    "description": "Código de tipo de CBU (ver GET /tipos-cbu)",
                                                    "type": "integer"
                                                },
                                                "cbu": {
                                                    "type": "string"
                                                },
                                                "titular": {
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "socios": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "cuit": {
                                                    "type": "string"
                                                },
                                                "nombre": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "porc": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "maximum": 100,
                                                    "minimum": 0
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "ute": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "cuit": {
                                                    "type": "string",
                                                    "maxLength": 11
                                                },
                                                "porc": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "maximum": 100,
                                                    "minimum": 0,
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "embargos": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "temb": {
                                                    "description": "Código de tipo de embargo (ver GET /tipos-embargo)",
                                                    "type": "string"
                                                },
                                                "det": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "porc": {
                                                    "type": "number",
                                                    "format": "float",
                                                    "maximum": 100,
                                                    "minimum": 0,
                                                    "nullable": true
                                                },
                                                "tcbu": {
                                                    "type": "integer",
                                                    "nullable": true
                                                },
                                                "cbu": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "titular": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "est": {
                                                    "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                                    "type": "string",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "contactos": {
                                        "type": "array",
                                        "items": {
                                            "properties": {
                                                "det": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "tel": {
                                                    "type": "string",
                                                    "nullable": true
                                                },
                                                "mail": {
                                                    "type": "string",
                                                    "format": "email",
                                                    "nullable": true
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "nullable": true
                                    },
                                    "domicilio_proveedor": {
                                        "description": "Domicilio operativo del proveedor (depósito, sede comercial, etc.). Se almacena en tabla `domi` con torigen='PRO'. Es independiente del domicilio legal de la persona (`direccion`) y puede ser distinto de éste.",
                                        "properties": {
                                            "loc_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "cp": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "barr_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "calle_id": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "nomcalle": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "puerta": {
                                                "type": "integer",
                                                "nullable": true
                                            },
                                            "det": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "piso": {
                                                "type": "string",
                                                "nullable": true
                                            },
                                            "dpto": {
                                                "type": "string",
                                                "nullable": true
                                            }
                                        },
                                        "type": "object",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Proveedor actualizado correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ProveedorResponse"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Proveedor no encontrado"
                    },
                    "500": {
                        "description": "No se pudo actualizar el proveedor"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            },
            "delete": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Dar de baja proveedor",
                "operationId": "3e8a8e465e402d39fa1bae992480ce7d",
                "parameters": [
                    {
                        "name": "prov_id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": false,
                    "content": {
                        "application/json": {
                            "schema": {
                                "properties": {
                                    "motivo": {
                                        "description": "Motivo de la baja. Queda registrado en el historial de acciones del proveedor.",
                                        "type": "string",
                                        "maxLength": 250,
                                        "example": "Proveedor inhabilitado por resolución municipal 123/2025",
                                        "nullable": true
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Proveedor dado de baja correctamente"
                    },
                    "404": {
                        "description": "Proveedor no encontrado"
                    },
                    "422": {
                        "description": "Error de validación o transición de estado inválida (ej: proveedor ya está dado de baja)"
                    },
                    "500": {
                        "description": "No se pudo dar de baja el proveedor"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/rubros": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar rubros de proveedor",
                "operationId": "2d7b3ddefad5ee4957403225c3ff3d7d",
                "responses": {
                    "200": {
                        "description": "Rubros recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Construcción"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los rubros"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_cbu": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de CBU",
                "description": "Devuelve los valores válidos para el campo `tcbu` de cada item en `cuentas` y `embargos`.",
                "operationId": "963169c861ef4452e3fc9ec39963b9a2",
                "responses": {
                    "200": {
                        "description": "Tipos de CBU recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "CBU Bancario"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de CBU"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_embargo": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de embargo",
                "description": "Devuelve los valores válidos para el campo `temb` de cada item en `embargos`.",
                "operationId": "d06846d54905d2daeb4e5b83c63d6e3a",
                "responses": {
                    "200": {
                        "description": "Tipos de embargo recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "string",
                                                        "example": "J"
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Embargo Judicial"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de embargo"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_inscripcion": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de inscripción",
                "description": "Devuelve los valores válidos para el campo `tipo` de cada item en `inscripciones`.",
                "operationId": "092bdea3c10e0e42ba9549846596e8a3",
                "responses": {
                    "200": {
                        "description": "Tipos de inscripción recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "string",
                                                        "example": "I"
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Inscripción Municipal"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de inscripción"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_iva": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de IVA (situación frente al IVA)",
                "description": "Devuelve los valores válidos para el campo `tipo_iva` del proveedor.",
                "operationId": "071b1500fea8c1eca2b8cf36ddec2ec2",
                "responses": {
                    "200": {
                        "description": "Tipos de IVA recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Responsable Inscripto"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de IVA"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_liquidacion": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de liquidación",
                "description": "Devuelve los valores válidos para el campo `tliq` del proveedor.",
                "operationId": "11fcaf7f03ebcb88ac03b600cfd2a6fc",
                "responses": {
                    "200": {
                        "description": "Tipos de liquidación recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "string",
                                                        "example": "LO"
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Liquidación Ordinaria"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de liquidación"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_persona": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de persona",
                "description": "Devuelve los valores válidos para el campo `tipo_persona` del proveedor.",
                "operationId": "abbb1a3a7c30917f95d8d31e0316c135",
                "responses": {
                    "200": {
                        "description": "Tipos de persona recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "integer",
                                                        "example": 1
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Persona Física"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de persona"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/tipos_proveedor": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar tipos de proveedor",
                "description": "Devuelve los valores válidos para el campo `tprov` del proveedor.",
                "operationId": "0c93ef248636fa6024c21a603c6a987b",
                "responses": {
                    "200": {
                        "description": "Tipos de proveedor recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "string",
                                                        "example": "J"
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Jurídico"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Tipos de proveedor"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/proveedores/estados": {
            "get": {
                "tags": [
                    "Proveedor"
                ],
                "summary": "Listar estados de proveedor",
                "description": "Devuelve los valores válidos para el campo `est` del proveedor (catálogo fin.proveedor_test).",
                "operationId": "d75e728a7a41e30e1ec2d768ed4d42f0",
                "responses": {
                    "200": {
                        "description": "Estados de proveedor recuperados correctamente",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "$ref": "#/components/schemas/ApiStatus"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "cod": {
                                                        "type": "string",
                                                        "example": "A"
                                                    },
                                                    "nombre": {
                                                        "type": "string",
                                                        "example": "Activo"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "No se pudieron recuperar los Estados de proveedor"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/tesoreria": {
            "get": {
                "tags": [
                    "Tesoreria"
                ],
                "summary": "Obtener tesorerías activas",
                "operationId": "3fcece40664a565c2f040b6af8ccf661",
                "responses": {
                    "200": {
                        "description": "Tesorerías recuperadas correctamente"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/transporte/deuda": {
            "get": {
                "tags": [
                    "Transporte"
                ],
                "summary": "Obtener deuda de transporte",
                "description": "Retorna la deuda agregada por objeto/persona, filtrando opcionalmente por documento o identificador de objeto.",
                "operationId": "e03543507e509cc623855d700320615a",
                "parameters": [
                    {
                        "name": "ndoc",
                        "in": "query",
                        "description": "Número de documento",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "obj_id",
                        "in": "query",
                        "description": "Identificador del objeto",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "fch_emi_desde",
                        "in": "query",
                        "description": "Fecha de emisión desde (incluida)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    },
                    {
                        "name": "fch_emi_hasta",
                        "in": "query",
                        "description": "Fecha de emisión hasta (incluida)",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "format": "date"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Éxito",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "properties": {
                                        "status": {
                                            "properties": {
                                                "messages": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "success": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "type": "object"
                                        },
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "properties": {
                                                    "obj_id": {
                                                        "type": "string"
                                                    },
                                                    "num": {
                                                        "type": "string"
                                                    },
                                                    "nombre": {
                                                        "type": "string"
                                                    },
                                                    "ndoc": {
                                                        "type": "string"
                                                    },
                                                    "dominio": {
                                                        "type": "string"
                                                    },
                                                    "cat": {
                                                        "type": "string"
                                                    },
                                                    "cat_nombre": {
                                                        "type": "string"
                                                    },
                                                    "saldo_total": {
                                                        "type": "number",
                                                        "format": "float"
                                                    }
                                                },
                                                "type": "object"
                                            }
                                        }
                                    },
                                    "type": "object"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        },
        "/api/ext/tributo": {
            "get": {
                "tags": [
                    "Tributo"
                ],
                "summary": "Obtener tributos activos",
                "operationId": "3ea731caf8222b35527af59ff529ab18",
                "parameters": [
                    {
                        "name": "nombre",
                        "in": "query",
                        "description": "Filtro por nombre de tributo (búsqueda parcial, ilike)",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tributos recuperados correctamente"
                    },
                    "500": {
                        "description": "Error interno"
                    }
                },
                "security": [
                    {
                        "sanctum": []
                    }
                ]
            }
        }
    },
    "components": {
        "schemas": {
            "PagoLiquidacionItem": {
                "description": "Ítem de la liquidación de la intención de pago.",
                "properties": {
                    "item_id": {
                        "description": "Código de ítem",
                        "type": "integer",
                        "example": 101
                    },
                    "item_nom": {
                        "description": "Nombre del ítem",
                        "type": "string",
                        "example": "Tasa de Servicios a la Propiedad"
                    },
                    "cant": {
                        "description": "Cantidad",
                        "type": "integer",
                        "example": 1
                    },
                    "monto": {
                        "description": "Importe del ítem",
                        "type": "number",
                        "format": "float",
                        "example": 15230.5
                    }
                },
                "type": "object"
            },
            "PagoDetalle": {
                "description": "Detalle de la intención de pago (sam.uf_caja_pagoelec_det).",
                "properties": {
                    "pag_id": {
                        "description": "Identificador de la intención de pago",
                        "type": "integer",
                        "example": 184523
                    },
                    "est": {
                        "description": "Estado: P pendiente, A aprobado, V aprobado pendiente de acreditación, E rechazado / error, R revertido (anulado o devuelto después de aprobado)",
                        "type": "string",
                        "enum": [
                            "P",
                            "A",
                            "V",
                            "E",
                            "R"
                        ],
                        "example": "P"
                    },
                    "monto": {
                        "description": "Importe total a cobrar",
                        "type": "number",
                        "format": "float",
                        "example": 45691.5
                    },
                    "fchalta": {
                        "description": "Fecha de alta de la intención (ISO 8601: YYYY-MM-DD)",
                        "type": "string",
                        "format": "date",
                        "example": "2026-10-07"
                    },
                    "fchvenc": {
                        "description": "Fecha de vencimiento de la intención (ISO 8601: YYYY-MM-DD)",
                        "type": "string",
                        "format": "date",
                        "example": "2026-10-10"
                    },
                    "ctacte_id": {
                        "description": "Cuenta corriente pagada cuando la intención cubre un único período; 0 si se consolidó en una facilidad",
                        "type": "integer",
                        "example": 0
                    },
                    "faci_id": {
                        "description": "Facilidad que consolida los períodos cuando la intención cubre más de uno; 0 si no aplica",
                        "type": "integer",
                        "example": 9876
                    },
                    "jud_id": {
                        "description": "Juicio asociado; siempre 0 para agentes externos",
                        "type": "integer",
                        "example": 0
                    },
                    "trib_id": {
                        "description": "Código de tributo (ver GET /api/ext/tributo)",
                        "type": "integer",
                        "example": 1
                    },
                    "trib_nom": {
                        "description": "Nombre del tributo",
                        "type": "string",
                        "example": "Inmobiliario Urbano"
                    },
                    "obj_id": {
                        "description": "Objeto imponible",
                        "type": "string",
                        "example": "I0001234"
                    },
                    "obj_nom": {
                        "description": "Nombre del objeto",
                        "type": "string",
                        "example": "Inmueble Calle 1 N° 100"
                    },
                    "obj_dato": {
                        "description": "Dato identificatorio del objeto",
                        "type": "string",
                        "example": "01-02-003-004"
                    },
                    "nombre": {
                        "description": "Titular",
                        "type": "string",
                        "example": "PEREZ JUAN"
                    },
                    "tdoc_nom": {
                        "description": "Tipo de documento del titular",
                        "type": "string",
                        "example": "CUIT"
                    },
                    "ndoc": {
                        "description": "Número de documento del titular",
                        "type": "string",
                        "example": "20123456789"
                    },
                    "cuit": {
                        "description": "CUIT del titular",
                        "type": "string",
                        "example": "20123456789"
                    },
                    "domi": {
                        "description": "Domicilio del titular",
                        "type": "string",
                        "example": "Calle 1 N° 100"
                    },
                    "periodos": {
                        "description": "Períodos incluidos",
                        "type": "string",
                        "example": "2026/1, 2026/2"
                    },
                    "caja_id": {
                        "description": "Caja que cobró (ver GET /api/ext/caja); 0 mientras está pendiente",
                        "type": "integer",
                        "example": 195
                    },
                    "caja_nom": {
                        "description": "Nombre de la caja",
                        "type": "string",
                        "example": "Agente externo"
                    },
                    "ticket": {
                        "description": "Ticket de caja generado al imputar; vacío mientras no se imputó",
                        "type": "integer",
                        "example": 556677,
                        "nullable": true
                    },
                    "codbarra": {
                        "description": "Código de barras",
                        "type": "string",
                        "example": "0123456789012345678901234567890123456789"
                    },
                    "codbarra_corta": {
                        "description": "Código de barras corto",
                        "type": "string",
                        "example": "01234567890123"
                    },
                    "npe": {
                        "description": "Número de pago electrónico",
                        "type": "string",
                        "example": "012345678901234567"
                    },
                    "url": {
                        "description": "Referencia / URL de la pasarela",
                        "type": "string",
                        "example": ""
                    },
                    "err": {
                        "description": "Detalle del error o rechazo",
                        "type": "string",
                        "example": ""
                    },
                    "arr_liq": {
                        "description": "Liquidación del pago",
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/PagoLiquidacionItem"
                        }
                    },
                    "arr_per": {
                        "description": "ctacte_id incluidos en la intención",
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "example": 1234567
                        }
                    }
                },
                "type": "object"
            },
            "PagoResponse": {
                "required": [
                    "status",
                    "data"
                ],
                "properties": {
                    "status": {
                        "$ref": "#/components/schemas/ApiStatus"
                    },
                    "data": {
                        "$ref": "#/components/schemas/PagoDetalle"
                    }
                },
                "type": "object"
            },
            "PagoImputacionResponse": {
                "required": [
                    "status",
                    "data"
                ],
                "properties": {
                    "status": {
                        "$ref": "#/components/schemas/ApiStatus"
                    },
                    "data": {
                        "properties": {
                            "ticket": {
                                "description": "Ticket de caja generado (A) o revertido (R); null cuando el pago se rechaza",
                                "type": "integer",
                                "example": 556677,
                                "nullable": true
                            },
                            "idempotente": {
                                "description": "true si el pago ya estaba en el estado pedido (reintento): no se volvió a imputar",
                                "type": "boolean",
                                "example": false
                            },
                            "pago": {
                                "$ref": "#/components/schemas/PagoDetalle"
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "ProveedorResponse": {
                "properties": {
                    "status": {
                        "$ref": "#/components/schemas/ApiStatus"
                    },
                    "data": {
                        "properties": {
                            "prov_id": {
                                "type": "integer"
                            },
                            "obj_id": {
                                "type": "integer"
                            },
                            "cuit": {
                                "type": "string"
                            },
                            "tipo_persona": {
                                "type": "integer",
                                "nullable": true
                            },
                            "tipo_iva": {
                                "type": "integer",
                                "nullable": true
                            },
                            "nombre": {
                                "type": "string"
                            },
                            "tliq": {
                                "type": "string"
                            },
                            "tprov": {
                                "type": "string"
                            },
                            "capitaldeclarado": {
                                "type": "number",
                                "format": "float",
                                "nullable": true
                            },
                            "cantpersonal": {
                                "type": "integer",
                                "nullable": true
                            },
                            "rf": {
                                "type": "integer",
                                "nullable": true
                            },
                            "especialidad": {
                                "type": "string",
                                "nullable": true
                            },
                            "antecedentes": {
                                "type": "string",
                                "nullable": true
                            },
                            "contacto": {
                                "type": "string",
                                "nullable": true
                            },
                            "web": {
                                "type": "string",
                                "nullable": true
                            },
                            "lic": {
                                "type": "string",
                                "nullable": true
                            },
                            "est": {
                                "description": "Código de estado del proveedor (ver GET /api/ext/proveedores/estados)",
                                "type": "string"
                            },
                            "activo": {
                                "description": "Derivado: true si est != 'B'",
                                "type": "boolean"
                            },
                            "obs": {
                                "type": "string",
                                "nullable": true
                            },
                            "fchalta": {
                                "description": "Fecha de alta (ISO 8601: YYYY-MM-DD)",
                                "type": "string",
                                "format": "date",
                                "example": "2023-01-15",
                                "nullable": true
                            },
                            "fchconstitucion": {
                                "description": "Fecha de constitución (ISO 8601: YYYY-MM-DD)",
                                "type": "string",
                                "format": "date",
                                "example": "2020-03-15",
                                "nullable": true
                            },
                            "fchbaja": {
                                "description": "Fecha de baja (ISO 8601: YYYY-MM-DD)",
                                "type": "string",
                                "format": "date",
                                "example": "2024-06-30",
                                "nullable": true
                            },
                            "usrbaja": {
                                "type": "integer",
                                "nullable": true
                            },
                            "fchvenc": {
                                "description": "Fecha de vencimiento de habilitación (ISO 8601: YYYY-MM-DD)",
                                "type": "string",
                                "format": "date",
                                "example": "2025-12-31",
                                "nullable": true
                            },
                            "fchmod": {
                                "description": "Fecha/hora de última modificación (ISO 8601: YYYY-MM-DDTHH:MM:SSZ)",
                                "type": "string",
                                "format": "date-time",
                                "example": "2024-11-20T10:30:00Z",
                                "nullable": true
                            },
                            "usrmod": {
                                "type": "integer",
                                "nullable": true
                            },
                            "ali": {
                                "type": "number",
                                "format": "float",
                                "nullable": true
                            },
                            "domicilio": {
                                "properties": {
                                    "domi_id": {
                                        "type": "integer"
                                    },
                                    "nomcalle": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "puerta": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "piso": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "dpto": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "loc_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "cp": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "barr_id": {
                                        "type": "integer",
                                        "nullable": true
                                    }
                                },
                                "type": "object",
                                "nullable": true
                            },
                            "rubros": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "cod": {
                                            "type": "integer"
                                        },
                                        "nombre": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "inscripciones": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "orden": {
                                            "type": "integer"
                                        },
                                        "tipo": {
                                            "type": "string"
                                        },
                                        "fecha": {
                                            "description": "ISO 8601: YYYY-MM-DD",
                                            "type": "string",
                                            "format": "date",
                                            "example": "2023-06-01",
                                            "nullable": true
                                        },
                                        "fchvisa": {
                                            "description": "ISO 8601: YYYY-MM-DD",
                                            "type": "string",
                                            "format": "date",
                                            "example": "2023-06-15",
                                            "nullable": true
                                        },
                                        "fchvenc": {
                                            "description": "ISO 8601: YYYY-MM-DD",
                                            "type": "string",
                                            "format": "date",
                                            "example": "2025-12-31",
                                            "nullable": true
                                        },
                                        "expe": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "detalle": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "est": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "cuentas": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "orden": {
                                            "type": "integer"
                                        },
                                        "tcbu": {
                                            "type": "integer"
                                        },
                                        "cbu": {
                                            "type": "string"
                                        },
                                        "titular": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "socios": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "cuit": {
                                            "type": "string"
                                        },
                                        "nombre": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "porc": {
                                            "type": "number",
                                            "format": "float"
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "ute": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "orden": {
                                            "type": "integer"
                                        },
                                        "cuit": {
                                            "type": "string"
                                        },
                                        "porc": {
                                            "type": "number",
                                            "format": "float",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "embargos": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "orden": {
                                            "type": "integer"
                                        },
                                        "temb": {
                                            "type": "string"
                                        },
                                        "det": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "porc": {
                                            "type": "number",
                                            "format": "float",
                                            "nullable": true
                                        },
                                        "tcbu": {
                                            "type": "integer",
                                            "nullable": true
                                        },
                                        "cbu": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "titular": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "est": {
                                            "type": "string",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "contactos": {
                                "type": "array",
                                "items": {
                                    "properties": {
                                        "orden": {
                                            "type": "integer"
                                        },
                                        "det": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "tel": {
                                            "type": "string",
                                            "nullable": true
                                        },
                                        "mail": {
                                            "type": "string",
                                            "format": "email",
                                            "nullable": true
                                        }
                                    },
                                    "type": "object"
                                }
                            },
                            "domicilio_proveedor": {
                                "properties": {
                                    "loc_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "cp": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "barr_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "calle_id": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "nomcalle": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "puerta": {
                                        "type": "integer",
                                        "nullable": true
                                    },
                                    "det": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "piso": {
                                        "type": "string",
                                        "nullable": true
                                    },
                                    "dpto": {
                                        "type": "string",
                                        "nullable": true
                                    }
                                },
                                "type": "object",
                                "nullable": true
                            }
                        },
                        "type": "object"
                    }
                },
                "type": "object"
            },
            "ApiStatus": {
                "description": "Bloque de estado presente en TODAS las respuestas de la API.",
                "required": [
                    "messages",
                    "success"
                ],
                "properties": {
                    "messages": {
                        "description": "Lista de mensajes. En errores de validación contiene un mensaje por cada regla incumplida.",
                        "type": "array",
                        "items": {
                            "type": "string",
                            "example": "Operación realizada correctamente."
                        }
                    },
                    "success": {
                        "type": "boolean",
                        "example": true
                    }
                },
                "type": "object"
            },
            "ApiResponse": {
                "description": "Envelope único de respuesta de la API. La clave `data` está siempre presente y vale null cuando no hay contenido.",
                "required": [
                    "status",
                    "data"
                ],
                "properties": {
                    "status": {
                        "$ref": "#/components/schemas/ApiStatus"
                    },
                    "data": {
                        "description": "Contenido de la respuesta.",
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ApiError": {
                "description": "Respuesta de error. Misma estructura que ApiResponse con `status.success = false`.",
                "required": [
                    "status",
                    "data"
                ],
                "properties": {
                    "status": {
                        "properties": {
                            "messages": {
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "example": "No se pudo procesar la solicitud."
                                }
                            },
                            "success": {
                                "type": "boolean",
                                "example": false
                            }
                        },
                        "type": "object"
                    },
                    "data": {
                        "description": "Detalle del error cuando corresponde; null en caso contrario.",
                        "example": null,
                        "nullable": true
                    }
                },
                "type": "object"
            },
            "ApiValidationError": {
                "description": "Error de validación (422). `status.messages` lista todos los mensajes y `data` los agrupa por campo.",
                "required": [
                    "status",
                    "data"
                ],
                "properties": {
                    "status": {
                        "properties": {
                            "messages": {
                                "type": "array",
                                "items": {
                                    "type": "string",
                                    "example": "El nombre es obligatorio."
                                }
                            },
                            "success": {
                                "type": "boolean",
                                "example": false
                            }
                        },
                        "type": "object"
                    },
                    "data": {
                        "description": "Errores agrupados por campo.",
                        "type": "object",
                        "additionalProperties": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                },
                "type": "object"
            }
        },
        "securitySchemes": {
            "sanctum": {
                "type": "apiKey",
                "description": "Bearer token from Sanctum",
                "name": "Authorization",
                "in": "header"
            },
            "userToken": {
                "type": "apiKey",
                "description": "Token del usuario del municipio, obtenido en GET /api/user/token luego de POST /api/user/login. Sólo lo exigen los endpoints marcados con este esquema.",
                "name": "User-Token",
                "in": "header"
            }
        }
    },
    "tags": [
        {
            "name": "Pago",
            "description": "Intenciones de pago para agentes externos de cobro."
        },
        {
            "name": "Autenticación",
            "description": "Autenticación"
        },
        {
            "name": "Caja",
            "description": "Caja"
        },
        {
            "name": "Objeto",
            "description": "Objeto"
        },
        {
            "name": "Persona",
            "description": "Persona"
        },
        {
            "name": "Proveedor",
            "description": "Proveedor"
        },
        {
            "name": "Tesoreria",
            "description": "Tesoreria"
        },
        {
            "name": "Transporte",
            "description": "Transporte"
        },
        {
            "name": "Tributo",
            "description": "Tributo"
        }
    ],
    "security": [
        {
            "sanctum": []
        }
    ]
}