{"openapi":"3.0.3","info":{"title":"API Proveedores (simulador)","version":"1.0-mock","description":"Simulación con estado de una API de proveedores para el piloto de orquestaciones. Permite consultar un proveedor por NIT, escalar una factura con novedad y consultar el escalamiento por su radicado. Los datos son ficticios y viven en memoria: se pierden al reiniciar el simulador."},"servers":[{"url":"https://mock-proveedores.nexus.zoanas.com"}],"tags":[{"name":"Proveedores","description":"Proveedores y escalamiento de facturas"}],"paths":{"/api/Proveedores/ConsultarProveedor":{"get":{"tags":["Proveedores"],"operationId":"ConsultarProveedor","summary":"Consultar proveedor","description":"Busca un proveedor por NIT y devuelve su razón social, estado (ACTIVO o BLOQUEADO), régimen tributario y plazo de pago. Un proveedor bloqueado no debe recibir pagos hasta que se resuelva el bloqueo.","parameters":[{"name":"nit","in":"query","required":true,"description":"NIT del proveedor, solo dígitos y sin dígito de verificación.","schema":{"type":"string","example":"900100200"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Proveedor"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/Proveedores/EscalarFactura":{"post":{"tags":["Proveedores"],"operationId":"EscalarFactura","summary":"Escalar factura","description":"Registra el escalamiento de una factura con novedad y devuelve su número de radicado. Es idempotente por la cabecera Idempotency-Key: si se repite con la misma clave, devuelve el mismo radicado sin crear otro.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Clave única de la solicitud (por ejemplo, el número de factura más el NIT). Repetir con la misma clave devuelve el mismo radicado.","schema":{"type":"string","maxLength":200,"example":"FV-1001-900100200"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EscalamientoNuevo"}}}},"responses":{"200":{"description":"Escalamiento registrado (o el mismo, si la clave ya se usó)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Radicado"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/Proveedores/ConsultarEscalamiento":{"get":{"tags":["Proveedores"],"operationId":"ConsultarEscalamiento","summary":"Consultar escalamiento","description":"Devuelve un escalamiento por su número de radicado: factura, proveedor, motivo, valor, estado y fecha.","parameters":[{"name":"radicado","in":"query","required":true,"description":"Número de radicado devuelto por EscalarFactura.","schema":{"type":"string","example":"ESC-000001"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Escalamiento"}}}},"400":{"description":"Parámetros inválidos o incompletos","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No encontrado","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Proveedor":{"type":"object","properties":{"nit":{"type":"string","description":"NIT sin dígito de verificación.","example":"900100200"},"razonSocial":{"type":"string","description":"Razón social.","example":"Suministros Andinos S.A.S."},"estado":{"type":"string","enum":["ACTIVO","BLOQUEADO"],"description":"Estado del proveedor."},"activo":{"type":"boolean","description":"Verdadero si el estado es ACTIVO."},"regimen":{"type":"string","enum":["COMUN","SIMPLIFICADO"],"description":"Régimen tributario."},"ciudad":{"type":"string","description":"Ciudad principal."},"diasPago":{"type":"integer","description":"Plazo de pago pactado, en días."},"motivoBloqueo":{"type":"string","description":"Motivo del bloqueo; solo si el estado es BLOQUEADO."}}},"EscalamientoNuevo":{"type":"object","required":["numeroFactura","nit"],"properties":{"numeroFactura":{"type":"string","maxLength":60,"description":"Número de la factura del proveedor.","example":"FV-1001"},"nit":{"type":"string","description":"NIT del proveedor que emitió la factura.","example":"900100200"},"motivo":{"type":"string","maxLength":1000,"description":"Motivo del escalamiento (opcional).","example":"El valor no coincide con la orden de compra."},"valor":{"type":"number","description":"Valor de la factura en pesos (opcional).","example":1250000}}},"Radicado":{"type":"object","properties":{"radicado":{"type":"string","description":"Número de radicado del escalamiento.","example":"ESC-000123"},"estado":{"type":"string","enum":["RADICADO"],"description":"Estado del escalamiento."},"fecha":{"type":"string","format":"date-time","description":"Fecha y hora del radicado."},"repetido":{"type":"boolean","description":"Verdadero si la clave de idempotencia ya se había usado y se devolvió el radicado existente."}}},"Escalamiento":{"type":"object","properties":{"radicado":{"type":"string","description":"Número de radicado.","example":"ESC-000123"},"estado":{"type":"string","enum":["RADICADO"],"description":"Estado del escalamiento."},"fecha":{"type":"string","format":"date-time","description":"Fecha y hora del radicado."},"numeroFactura":{"type":"string","description":"Número de la factura."},"nit":{"type":"string","description":"NIT del proveedor."},"razonSocial":{"type":"string","description":"Razón social del proveedor."},"motivo":{"type":"string","nullable":true,"description":"Motivo del escalamiento."},"valor":{"type":"number","nullable":true,"description":"Valor de la factura en pesos."}}},"Error":{"type":"object","properties":{"statusCode":{"type":"integer","description":"Código HTTP."},"title":{"type":"string","description":"Título del error."},"message":{"type":"string","description":"Descripción del error en español."},"date":{"type":"string","format":"date-time","description":"Fecha y hora del error."}}}}}}