{
  "openapi": "3.1.0",
  "info": {
    "title": "VL Siniestros — API del Agente de IA",
    "version": "1.0.0",
    "description": "REST API para operar la aplicación desde un agente de IA externo."
  },
  "servers": [
    {
      "url": "https://ledesma.ngunilla.com/api/public/agent/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/me": {
      "get": {
        "summary": "Información del agente autenticado",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid",
                  "nombre": "Asistente principal",
                  "scopes": [
                    "*"
                  ],
                  "user_id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros": {
      "get": {
        "summary": "Listar siniestros",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "estado",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filtro por estado (ej. reclamo_presentado)"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Búsqueda por código, N° siniestro o patente"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Página (default 1)"
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Tamaño de página (default 20, máx 100)"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "codigo": "VL-2025-0001",
                      "estado": "reclamo_presentado",
                      "cliente": {
                        "nombre": "Juan Pérez"
                      },
                      "fecha_hecho": "2025-01-10"
                    }
                  ],
                  "total": 1
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear un siniestro nuevo",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "cliente": {
                  "nombre": "Juan Pérez",
                  "dni_cuit": "20-12345678-9",
                  "telefono": "+54..."
                },
                "siniestro": {
                  "fecha_hecho": "2025-01-10",
                  "descripcion_hecho": "Colisión en Av. Cabildo",
                  "proximo_paso": "Presentar denuncia"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid",
                  "codigo": "VL-2025-0001"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}": {
      "get": {
        "summary": "Detalle de un siniestro",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid",
                  "codigo": "VL-2025-0001",
                  "estado": "reclamo_presentado"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "patch": {
        "summary": "Actualizar campos del siniestro",
        "description": "Permite modificar cualquier campo editable (montos, fechas, IDs de catálogo, observaciones, etc). No permite tocar id, codigo, timestamps ni is_test.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "proximo_paso": "Reunión con perito",
                "monto_reclamado": 500000,
                "compania_propia_id": "uuid"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/estado": {
      "post": {
        "summary": "Cambiar el estado de un siniestro",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "estado": "reclamo_presentado",
                "nota": "Enviado por plataforma X"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/eventos": {
      "post": {
        "summary": "Agregar un evento/nota al timeline",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "titulo": "Llamado con la compañía",
                "descripcion": "Informa demora",
                "tipo": "nota"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/timeline": {
      "get": {
        "summary": "Timeline de eventos del siniestro",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "tipo": "cambio_estado",
                      "titulo": "Cambio de estado"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/checklist": {
      "get": {
        "summary": "Checklist de documentos del siniestro",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "document_type": "DNI",
                      "estado": "faltante"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/clientes": {
      "get": {
        "summary": "Listar clientes",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "nombre": "Juan Pérez"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear cliente",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "Juan Pérez",
                "dni_cuit": "20-...",
                "telefono": "+54...",
                "email": "j@e.com"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/companias": {
      "get": {
        "summary": "Listar compañías",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "nombre": "La Segunda"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear compañía",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "La Segunda",
                "email_reclamos": "reclamos@..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/productores": {
      "get": {
        "summary": "Listar productores",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "nombre": "Broker X"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear productor/broker",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "Broker X",
                "email": "..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/tramitadores": {
      "get": {
        "summary": "Listar tramitadores",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "nombre": "Estudio Y"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear tramitador",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "Estudio Y"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/plantillas": {
      "get": {
        "summary": "Listar plantillas de mensajes",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "nombre": "Aviso presentación"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear plantilla",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "Recordatorio",
                "canal": "email",
                "cuerpo": "Hola {{cliente}}..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/search": {
      "get": {
        "summary": "Búsqueda global",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Texto a buscar"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "siniestros": [],
                  "clientes": []
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/archivar": {
      "post": {
        "summary": "Archivar un siniestro",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/reabrir": {
      "post": {
        "summary": "Reabrir un siniestro archivado",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/notas": {
      "get": {
        "summary": "Listar notas del siniestro (por audiencia)",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "audiencia": "interna",
                      "contenido": "..."
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Crear nota con audiencia (interna/productor/cliente/todos)",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "contenido": "Cliente confirmó documentación",
                "audiencia": "interna"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/documentos": {
      "post": {
        "summary": "Agregar requisito al checklist",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "document_type_codigo": "dni_titular",
                "estado": "faltante"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid"
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/documentos/:docId": {
      "patch": {
        "summary": "Actualizar estado/comentario de un ítem del checklist",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "estado": "recibido",
                "comentario": "OK",
                "fecha_recepcion": "2025-02-01"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/documentos/:docId/archivos": {
      "post": {
        "summary": "Subir archivo (base64) o adjuntar link externo (Dropbox/Drive)",
        "description": "Enviar `content_base64` para subir directo al bucket, o `external_url` para guardar solo el link. Máximo 25MB por archivo. Marca el requisito como recibido.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "dni-frente.jpg",
                "mime_type": "image/jpeg",
                "content_base64": "iVBORw0KGgo..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid",
                  "storage_path": "uuid/dni_titular/agent-..."
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/adjuntos": {
      "get": {
        "summary": "Listar adjuntos libres (fotos DNI, póliza, etc.)",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": []
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Subir un adjunto libre (foto DNI, póliza, etc.)",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "nombre": "poliza.pdf",
                "kind": "poliza",
                "mime_type": "application/pdf",
                "content_base64": "JVBERi0xLjQK..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid",
                  "storage_path": "..."
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/ofertas": {
      "get": {
        "summary": "Listar ofertas de negociación",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": []
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      },
      "post": {
        "summary": "Registrar oferta / contraoferta / aceptación / rechazo",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "origen": "compania",
                "tipo": "oferta",
                "monto": 450000,
                "canal": "email",
                "comentario": "Primera propuesta"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "id": "uuid",
                  "secuencia": 1
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/cierre": {
      "get": {
        "summary": "Checklist de cierre del siniestro",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": []
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/siniestros/{id}/cierre/:taskId": {
      "patch": {
        "summary": "Actualizar una tarea del checklist de cierre",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "estado": "hecho",
                "comentario": "Confirmado"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/clientes/{id}": {
      "patch": {
        "summary": "Actualizar cliente",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "telefono": "+54..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/companias/{id}": {
      "patch": {
        "summary": "Actualizar compañía",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "activa": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/productores/{id}": {
      "patch": {
        "summary": "Actualizar productor",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "activo": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/tramitadores/{id}": {
      "patch": {
        "summary": "Actualizar tramitador",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "email": "..."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/plantillas/{id}": {
      "patch": {
        "summary": "Actualizar plantilla",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "activa": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "ok": true
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/document-types": {
      "get": {
        "summary": "Tipos de documento disponibles para el checklist",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "rows": [
                    {
                      "id": "uuid",
                      "codigo": "dni_titular",
                      "nombre": "DNI titular"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    },
    "/storage/signed-url": {
      "post": {
        "summary": "Obtener URL firmada temporal para descargar un archivo del bucket",
        "description": "",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              },
              "example": {
                "storage_path": "uuid/dni_titular/agent-...",
                "expires_in": 600
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://..."
                }
              }
            }
          },
          "401": {
            "description": "Token faltante o inválido"
          },
          "403": {
            "description": "Scope insuficiente"
          }
        }
      }
    }
  }
}