{
	"openapi": "3.0.0",
	"components": {
		"examples": {},
		"headers": {},
		"parameters": {},
		"requestBodies": {},
		"responses": {},
		"schemas": {
			"IAPIFixedVentaCrearSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"idCFE": {
						"type": "string"
					},
					"numero": {
						"type": "number",
						"format": "double"
					},
					"serie": {
						"type": "string"
					},
					"tipoCFE": {
						"anyOf": [
							{
								"type": "number",
								"format": "double"
							},
							{
								"type": "string"
							}
						]
					},
					"comprobante": {
						"type": "string"
					},
					"urlA4": {
						"type": "string",
						"description": "URL del PDF del comprobante en formato A4."
					},
					"urlVerificarCFE": {
						"type": "string"
					},
					"idVenta": {
						"type": "string"
					},
					"urlTicket": {
						"type": "string",
						"description": "URL del ticket térmico en PDF. Formato estrecho para impresoras de ticket."
					},
					"htmlTicket": {
						"type": "string",
						"description": "Ticket en HTML. Útil para preview en pantalla o impresión desde el navegador."
					},
					"pdfBase64": {
						"type": "string",
						"description": "PDF del comprobante en formato A4, en base64."
					},
					"xml": {
						"type": "string"
					},
					"observaciones": {
						"type": "string"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"idCFE",
					"numero",
					"serie",
					"tipoCFE",
					"comprobante",
					"urlA4",
					"urlVerificarCFE"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedCliente": {
				"properties": {
					"tipoDocumento": {
						"type": "number",
						"format": "double",
						"description": "Tipo de documento: 2=RUT, 3=CI, 4=Otros, 5=Pasaporte, 6=DNI, 7=NIFE.",
						"example": 2
					},
					"documento": {
						"type": "string",
						"description": "Número de documento (RUT, CI, etc.). Obligatorio para tipoDocumento 2 (RUT); opcional para\nel resto. Ver sección \"Identificación del cliente\" en la descripción de POST /ventaCrear.",
						"example": "219314970014"
					},
					"pais": {
						"type": "string",
						"description": "Código ISO de país (2 letras). Obligatorio para tipoDocumento 4 (Otros), 5 (Pasaporte),\n6 (DNI) y 7 (NIFE). Para tipoDocumento 6 (DNI) solo se admite AR, BR, CL o PY.",
						"example": "AR"
					},
					"razonSocial": {
						"type": "string",
						"description": "Razón social del cliente.",
						"example": "Panadería El Buen Pan S.A."
					},
					"nombreComercial": {
						"type": "string",
						"description": "Nombre comercial.",
						"example": "El Buen Pan"
					},
					"domicilio": {
						"type": "string",
						"description": "Domicilio fiscal.",
						"example": "Av. Italia 1234"
					},
					"localidad": {
						"type": "string",
						"description": "Localidad.",
						"example": "Montevideo"
					},
					"departamento": {
						"type": "string",
						"description": "Departamento.",
						"example": "Montevideo"
					},
					"domicilioEntrega": {
						"type": "string",
						"description": "Domicilio de entrega.",
						"example": "Av. Italia 1234"
					},
					"mailEnvioFactura": {
						"type": "string",
						"description": "Email para envío de factura. Si no se envía documento, se usa para identificar al cliente\n(ver sección \"Identificación del cliente\" en la descripción de POST /ventaCrear).",
						"example": "facturacion@ejemplo.com"
					},
					"telefono": {
						"type": "string",
						"description": "Teléfono de contacto.",
						"example": "099123456"
					},
					"observaciones": {
						"type": "string",
						"description": "Observaciones del cliente.",
						"example": ""
					}
				},
				"required": [
					"tipoDocumento",
					"documento",
					"razonSocial",
					"nombreComercial",
					"domicilio",
					"localidad",
					"departamento",
					"domicilioEntrega",
					"mailEnvioFactura",
					"telefono",
					"observaciones"
				],
				"type": "object",
				"additionalProperties": false
			},
			"CfeDgiTasaIva": {
				"type": "string",
				"enum": [
					"Basic",
					"Exp",
					"Min",
					"Exe",
					"Otro",
					"NoFac",
					"Suspenso",
					"Percibido",
					"literalE",
					""
				],
				"description": "Valor del campo cfeDgi de la tasa de IVA configurada en Fixed.\nDebe coincidir exactamente con uno de estos valores (sensible a mayúsculas):\n- Basic: Tasa básica (22%)\n- Min: Tasa mínima (10%)\n- Exe: Exento de IVA\n- Exp: Exportación\n- Otro: Otras tasas\n- NoFac: No facturable\n- Suspenso: Suspenso\n- Percibido: Percibido\n- literalE: Literal E"
			},
			"IAPIFixedVentaLineaCrearEntrada": {
				"properties": {
					"cantidad": {
						"type": "number",
						"format": "double",
						"description": "Cantidad de unidades vendidas.",
						"example": 1
					},
					"descripcion": {
						"type": "string",
						"description": "Nombre corto del ítem en el comprobante.",
						"example": "Pan francés"
					},
					"descripcionLarga": {
						"type": "string",
						"description": "Detalle adicional de la línea.",
						"example": "Pan francés artesanal"
					},
					"rubro": {
						"type": "string",
						"description": "Nombre o id del rubro de servicios; se crea si no existe.",
						"example": "Panadería"
					},
					"tasaIva": {
						"$ref": "#/components/schemas/CfeDgiTasaIva",
						"description": "Valor `cfeDgi` de la tasa de IVA configurada en Fixed.\nDebe ser exactamente uno de los valores del enum `CfeDgiTasaIva`.",
						"example": "Basic"
					},
					"descuentoMonto": {
						"type": "number",
						"format": "double",
						"description": "Monto de descuento en la línea (no porcentaje).",
						"example": 0
					},
					"precioUnitario": {
						"type": "number",
						"format": "double",
						"description": "Precio unitario según montoBruto.",
						"example": 120
					},
					"codigo": {
						"type": "string",
						"description": "Código del ítem (opcional), por ejemplo código de barras o código interno. Se guarda bajo\nel primer tipo de código que la empresa tenga configurado para impresión en Fixed (o\n\"Código\" si no tiene ninguno configurado), y así viaja en el comprobante fiscal igual que\nsi se hubiera cargado a mano.",
						"example": "7791234567890"
					}
				},
				"required": [
					"cantidad",
					"descripcion",
					"descripcionLarga",
					"rubro",
					"tasaIva",
					"descuentoMonto",
					"precioUnitario"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedVentaCrearEntrada": {
				"properties": {
					"cliente": {
						"allOf": [
							{
								"$ref": "#/components/schemas/IAPIFixedCliente"
							}
						],
						"nullable": true
					},
					"fecha": {
						"type": "string",
						"description": "Fecha del comprobante en formato dd/mm/aaaa.",
						"example": "23/06/2026"
					},
					"moneda": {
						"type": "string",
						"description": "Código ISO de la moneda del comprobante (UYU, USD, EUR, etc.).",
						"example": "UYU"
					},
					"montoBruto": {
						"type": "number",
						"enum": [
							0,
							1
						],
						"description": "0=precios sin IVA (neto), 1=precios con IVA incluido.",
						"example": 1
					},
					"lineasVenta": {
						"items": {
							"$ref": "#/components/schemas/IAPIFixedVentaLineaCrearEntrada"
						},
						"type": "array",
						"description": "Líneas del comprobante (al menos una)."
					},
					"observaciones": {
						"type": "string",
						"description": "Observaciones del comprobante.",
						"example": ""
					},
					"totalAPagar": {
						"type": "number",
						"format": "double",
						"description": "Total a pagar calculado por el integrador; debe coincidir con el calculado por Fixed.",
						"example": 120
					},
					"redondear": {
						"type": "boolean",
						"description": "Si se aplica redondeo al total.",
						"example": false
					},
					"local": {
						"type": "string",
						"description": "Id de local (opcional). Consultar /localesListado."
					},
					"formaDePago": {
						"type": "string",
						"enum": [
							"contado",
							"credito"
						],
						"description": "Forma de pago (opcional, default \"contado\").",
						"example": "contado"
					},
					"cotizacion": {
						"type": "number",
						"format": "double",
						"description": "Cotización del dólar a usar cuando `moneda` es \"USD\" (opcional). Si no se envía, se usa\nla cotización BCU vigente de la empresa. Se ignora si `moneda` es \"UYU\"."
					},
					"idempotencyKey": {
						"type": "string",
						"description": "Clave de idempotencia (opcional). Si reintentás un llamado a `/ventaCrear` (por ejemplo\nporque no recibiste la respuesta anterior por un corte de red) usando la misma\n`idempotencyKey` y exactamente los mismos datos, Fixed devuelve el mismo resultado de la\nprimera vez (éxito o error) en vez de reprocesar. Reusarla con datos distintos devuelve el\nerror `E23`. Ver sección \"Reintentos seguros (idempotencia)\" en la descripción de\nPOST /ventaCrear, especialmente cómo generar este valor correctamente.",
						"example": "a1b2c3d4-e5f6-4a1b-9c2d-1234567890ab"
					}
				},
				"required": [
					"cliente",
					"fecha",
					"moneda",
					"montoBruto",
					"lineasVenta",
					"observaciones",
					"totalAPagar",
					"redondear"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedVentaDevolucionTotalCrearSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"idCFE": {
						"type": "string"
					},
					"numero": {
						"type": "number",
						"format": "double"
					},
					"serie": {
						"type": "string"
					},
					"tipoCFE": {
						"anyOf": [
							{
								"type": "number",
								"format": "double"
							},
							{
								"type": "string"
							}
						]
					},
					"comprobante": {
						"type": "string"
					},
					"urlA4": {
						"type": "string",
						"description": "URL del PDF del comprobante en formato A4."
					},
					"urlVerificarCFE": {
						"type": "string"
					},
					"idVenta": {
						"type": "string"
					},
					"htmlTicket": {
						"type": "string"
					},
					"pdfBase64": {
						"type": "string",
						"description": "PDF del comprobante en formato A4, en base64."
					},
					"xml": {
						"type": "string"
					},
					"observaciones": {
						"type": "string"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"idCFE",
					"numero",
					"serie",
					"tipoCFE",
					"comprobante",
					"urlA4",
					"urlVerificarCFE"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedVentaDevolucionTotalEntrada": {
				"properties": {
					"idCFE": {
						"type": "string",
						"description": "idCFE de la venta original a devolver.",
						"example": "REEMPLAZAR_CON_ID_CFE"
					},
					"fecha": {
						"type": "string",
						"description": "Fecha de la nota de crédito en formato dd/mm/aaaa.",
						"example": "23/06/2026"
					},
					"cotizacion": {
						"type": "number",
						"format": "double",
						"description": "Cotización para USD; 1 usa la cotización original de la venta.",
						"example": 1
					},
					"ordenCompra": {
						"type": "string",
						"description": "Número de orden de compra (opcional).",
						"example": ""
					},
					"local": {
						"type": "string",
						"description": "Id de local; vacío usa el de la venta original.",
						"example": ""
					},
					"adenda": {
						"type": "string",
						"description": "Texto de adenda (opcional).",
						"example": ""
					},
					"totalADevolver": {
						"type": "number",
						"format": "double",
						"description": "Importe total a devolver; debe coincidir con el total de la factura original.",
						"example": 120
					},
					"idempotencyKey": {
						"type": "string",
						"description": "Clave de idempotencia (opcional). Si reintentás un llamado a `/ventaDevolucionTotalCrear`\n(por ejemplo porque no recibiste la respuesta anterior por un corte de red) usando la misma\n`idempotencyKey` y exactamente los mismos datos, Fixed devuelve el mismo resultado de la\nprimera vez (éxito o error) en vez de reprocesar. Reusarla con datos distintos devuelve el\nerror `E23`. Ver sección \"Reintentos seguros (idempotencia)\" en la descripción de\nPOST /ventaCrear, especialmente cómo generar este valor correctamente.",
						"example": "a1b2c3d4-e5f6-4a1b-9c2d-1234567890ab"
					}
				},
				"required": [
					"idCFE",
					"fecha",
					"cotizacion",
					"ordenCompra",
					"local",
					"adenda",
					"totalADevolver"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedVentaConsultaSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"idCFE": {
						"type": "string"
					},
					"numero": {
						"type": "number",
						"format": "double"
					},
					"serie": {
						"type": "string"
					},
					"tipoCFE": {
						"anyOf": [
							{
								"type": "number",
								"format": "double"
							},
							{
								"type": "string"
							}
						]
					},
					"comprobante": {
						"type": "string"
					},
					"urlA4": {
						"type": "string",
						"description": "URL del PDF del comprobante en formato A4."
					},
					"urlVerificarCFE": {
						"type": "string"
					},
					"estadoDGI": {
						"type": "string"
					},
					"motivoRechazoDGI": {
						"type": "string"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"idCFE",
					"numero",
					"serie",
					"tipoCFE",
					"comprobante",
					"urlA4",
					"urlVerificarCFE"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedVentaConsultaEntrada": {
				"properties": {
					"idCFE": {
						"type": "string",
						"description": "Identificador del CFE devuelto por /ventaCrear.",
						"example": "REEMPLAZAR_CON_ID_CFE"
					}
				},
				"required": [
					"idCFE"
				],
				"type": "object",
				"additionalProperties": false
			},
			"ConsultaFacturacion": {
				"properties": {
					"formaDePago": {
						"type": "string",
						"enum": [
							"contado",
							"credito"
						]
					},
					"fechaComprobante": {
						"type": "string"
					},
					"fechaCreacion": {
						"type": "string"
					},
					"comprobante": {
						"type": "string"
					},
					"documenoCliente": {
						"type": "string"
					},
					"nombreCliente": {
						"type": "string"
					},
					"idCFE": {
						"type": "string"
					},
					"tipoCFE": {
						"type": "number",
						"format": "double"
					},
					"serie": {
						"type": "string"
					},
					"numero": {
						"type": "number",
						"format": "double"
					},
					"importe": {
						"type": "number",
						"format": "double"
					},
					"moneda": {
						"type": "string",
						"enum": [
							"UYU",
							"USD"
						]
					},
					"cotizacion": {
						"type": "number",
						"format": "double"
					},
					"tipo": {
						"type": "string",
						"enum": [
							"venta",
							"devolucion"
						]
					},
					"creadaDesde": {
						"type": "string",
						"enum": [
							"web",
							"FixedTesting",
							"Fixed_API",
							"Otro"
						]
					},
					"motivoRechazoDGI": {
						"type": "string"
					},
					"estadoDGI": {
						"type": "string",
						"enum": [
							"aceptado",
							"rechazado",
							"sinrespuesta"
						]
					}
				},
				"required": [
					"formaDePago",
					"fechaComprobante",
					"fechaCreacion",
					"comprobante",
					"documenoCliente",
					"nombreCliente",
					"idCFE",
					"tipoCFE",
					"serie",
					"numero",
					"importe",
					"moneda",
					"cotizacion",
					"tipo",
					"creadaDesde",
					"motivoRechazoDGI",
					"estadoDGI"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultaFacturacionDiaSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"comprobantes": {
						"items": {
							"$ref": "#/components/schemas/ConsultaFacturacion"
						},
						"type": "array"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"comprobantes"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultaFacturacionDiaEntrada": {
				"properties": {
					"fecha": {
						"type": "string",
						"description": "Fecha a consultar en formato dd/mm/aaaa.",
						"example": "23/06/2026"
					}
				},
				"required": [
					"fecha"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedImprimirCFESalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"idCFE": {
						"type": "string"
					},
					"numero": {
						"type": "number",
						"format": "double"
					},
					"serie": {
						"type": "string"
					},
					"tipoCFE": {
						"anyOf": [
							{
								"type": "number",
								"format": "double"
							},
							{
								"type": "string"
							}
						]
					},
					"comprobante": {
						"type": "string"
					},
					"urlA4": {
						"type": "string",
						"description": "URL del PDF del comprobante en formato A4."
					},
					"urlVerificarCFE": {
						"type": "string"
					},
					"estadoDGI": {
						"type": "string"
					},
					"motivoRechazoDGI": {
						"type": "string"
					},
					"urlTicket": {
						"type": "string",
						"description": "URL del ticket térmico en PDF. Formato estrecho para impresoras de ticket."
					},
					"htmlTicket": {
						"type": "string",
						"description": "Ticket en HTML. Útil para preview en pantalla o impresión desde el navegador."
					},
					"pdfBase64": {
						"type": "string",
						"description": "PDF del comprobante en formato A4, en base64."
					},
					"xml": {
						"type": "string"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"idCFE",
					"numero",
					"serie",
					"tipoCFE",
					"comprobante",
					"urlA4",
					"urlVerificarCFE"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedObtenerProximoNumeroSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"serie": {
						"type": "string",
						"description": "Serie del CAE que se va a usar.",
						"example": "A"
					},
					"numero": {
						"type": "number",
						"format": "double",
						"description": "Próximo número a usar dentro de esa serie.",
						"example": 1523
					},
					"tcfe": {
						"type": "number",
						"format": "double",
						"description": "Tipo de comprobante consultado.",
						"example": 111
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"serie",
					"numero",
					"tcfe"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedObtenerProximoNumeroEntrada": {
				"properties": {
					"tipoDocumento": {
						"type": "number",
						"format": "double",
						"description": "Tipo de documento del cliente a facturar: 2=RUT, 3=CI, 4=Otros, 5=Pasaporte, 6=DNI, 7=NIFE.\nDetermina, junto con `tipo`, qué tipo de comprobante (CFE) se va a emitir y por lo tanto a\nqué CAE consultar: RUT (2) es e-Factura, el resto es e-Ticket.",
						"example": 2
					},
					"tipo": {
						"type": "string",
						"enum": [
							"venta",
							"devolucion"
						],
						"description": "Si se va a emitir una venta o una devolución (nota de crédito).",
						"example": "venta"
					}
				},
				"required": [
					"tipoDocumento",
					"tipo"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedValidarCredencialesSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"rut": {
						"type": "string",
						"description": "RUT de la empresa autenticada."
					},
					"nombreEmpresa": {
						"type": "string",
						"description": "Nombre de la empresa autenticada."
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"rut",
					"nombreEmpresa"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedCFERecibido": {
				"properties": {
					"idCFE": {
						"type": "string",
						"description": "Id interno del CFE recibido en Fixed."
					},
					"emisorNombre": {
						"type": "string",
						"description": "Nombre del emisor/proveedor."
					},
					"rutEmisor": {
						"type": "string",
						"description": "RUT del emisor/proveedor."
					},
					"tipo": {
						"type": "string",
						"enum": [
							"compra",
							"recibo",
							"remito",
							"resguardo"
						],
						"description": "Tipo de documento recibido."
					},
					"tcfe": {
						"type": "number",
						"format": "double",
						"description": "Tipo de CFE (código numérico DGI)."
					},
					"numero": {
						"type": "number",
						"format": "double"
					},
					"serie": {
						"type": "string"
					},
					"comprobante": {
						"type": "string"
					},
					"fechaComprobante": {
						"type": "number",
						"format": "double",
						"description": "Fecha del comprobante, timestamp en milisegundos (epoch)."
					},
					"moneda": {
						"type": "string"
					},
					"total": {
						"type": "number",
						"format": "double"
					},
					"formaPago": {
						"type": "string",
						"enum": [
							"contado",
							"credito",
							""
						]
					},
					"estado": {
						"type": "string",
						"enum": [
							"aceptado",
							"rechazado",
							"sinRespuesta"
						],
						"description": "Estado de la respuesta ante DGI."
					},
					"anulado": {
						"type": "boolean"
					},
					"xml": {
						"type": "string",
						"description": "XML del comprobante."
					}
				},
				"required": [
					"idCFE",
					"emisorNombre",
					"rutEmisor",
					"tipo",
					"tcfe",
					"numero",
					"serie",
					"comprobante",
					"fechaComprobante",
					"moneda",
					"total",
					"formaPago",
					"estado",
					"anulado",
					"xml"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultarCFERecibidosSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"cfesRecibidos": {
						"items": {
							"$ref": "#/components/schemas/IAPIFixedCFERecibido"
						},
						"type": "array"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"cfesRecibidos"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultarCFERecibidosEntrada": {
				"properties": {
					"rut": {
						"type": "string",
						"description": "RUT del emisor/proveedor a filtrar (opcional). Si no se envía, devuelve todos los CFEs\nrecibidos en el rango de fechas.",
						"example": "219314970014"
					},
					"fechaDesde": {
						"type": "string",
						"description": "Fecha desde (inclusive), formato dd/mm/aaaa. El rango entre `fechaDesde` y `fechaHasta` no\npuede superar los 31 días.",
						"example": "01/06/2026"
					},
					"fechaHasta": {
						"type": "string",
						"description": "Fecha hasta (inclusive), formato dd/mm/aaaa. El rango entre `fechaDesde` y `fechaHasta` no\npuede superar los 31 días.",
						"example": "30/06/2026"
					},
					"consultarNuevos": {
						"type": "boolean",
						"description": "Si es `true`, antes de responder Fixed consulta a DGI en vivo por CFEs nuevos en el rango\nindicado (mismo mecanismo que el botón \"Consultar en DGI nuevos CFEs recibidos\" de la web).\nImportante: DGI solo informa metadatos del comprobante, no el XML — un CFE recién\nreportado por DGI solo se guarda si el mail con el XML adjunto ya le llegó a Fixed. Si ese\nmail no llegó todavía, no va a aparecer en el resultado por más que se use este parámetro.\nPuede demorar bastante más que una consulta normal. Si falla (sin firma electrónica\nvigente, timeout, o error de DGI), igual se devuelven los datos ya guardados en Fixed, con\nuna advertencia en `descripcion`. Opcional, default `false`.",
						"example": false
					}
				},
				"required": [
					"fechaDesde",
					"fechaHasta"
				],
				"type": "object",
				"additionalProperties": false
			},
			"Cliente": {
				"properties": {
					"id": {
						"type": "string"
					},
					"tipoDocumento": {
						"type": "number",
						"format": "double"
					},
					"documento": {
						"type": "string"
					},
					"razonSocial": {
						"type": "string"
					},
					"pais": {
						"type": "string"
					},
					"nombreComercial": {
						"type": "string"
					},
					"direccion": {
						"type": "string"
					},
					"latitud": {
						"type": "number",
						"format": "double"
					},
					"longitud": {
						"type": "number",
						"format": "double"
					},
					"localidad": {
						"type": "string"
					},
					"departamento": {
						"type": "string"
					},
					"direccionEntrega": {
						"type": "string"
					},
					"descuento": {
						"type": "string"
					},
					"emails": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"mailDgi": {
						"type": "string"
					},
					"mailCopiaXml": {
						"items": {
							"type": "string"
						},
						"type": "array"
					},
					"vendedorId": {
						"type": "string"
					},
					"rubroServiciosVentaId": {
						"type": "string"
					},
					"listaPrecioServicios": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"nullable": true
					},
					"listaPrecioProductos": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"nullable": true
					},
					"formaDePago": {
						"type": "string"
					},
					"activo": {
						"type": "boolean"
					},
					"campoExtra": {
						"properties": {},
						"additionalProperties": {
							"type": "string"
						},
						"type": "object"
					},
					"saldoCuentas": {
						"properties": {},
						"additionalProperties": {
							"type": "number",
							"format": "double"
						},
						"type": "object"
					},
					"topeCuentas": {
						"properties": {},
						"additionalProperties": {
							"type": "number",
							"format": "double"
						},
						"type": "object"
					},
					"buscablePor": {
						"items": {
							"type": "string"
						},
						"type": "array",
						"nullable": true
					},
					"comentarios": {
						"type": "string",
						"nullable": true
					},
					"claveAnalisisDeuda": {
						"type": "string"
					},
					"infoAdicional": {
						"type": "string"
					},
					"whatsApp": {
						"type": "string"
					}
				},
				"required": [
					"id",
					"tipoDocumento",
					"documento",
					"razonSocial",
					"pais",
					"nombreComercial",
					"direccion",
					"latitud",
					"longitud",
					"localidad",
					"departamento",
					"direccionEntrega",
					"descuento",
					"emails",
					"mailDgi",
					"mailCopiaXml",
					"vendedorId",
					"rubroServiciosVentaId",
					"listaPrecioServicios",
					"listaPrecioProductos",
					"formaDePago",
					"activo",
					"campoExtra",
					"saldoCuentas",
					"topeCuentas",
					"buscablePor",
					"comentarios",
					"claveAnalisisDeuda",
					"infoAdicional",
					"whatsApp"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedClienteMostrarSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"cliente": {
						"allOf": [
							{
								"$ref": "#/components/schemas/Cliente"
							}
						],
						"nullable": true
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"cliente"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedClienteMostrarEntrada": {
				"properties": {
					"tipoDocumento": {
						"type": "number",
						"format": "double",
						"description": "2 = RUT, 3 = cédula de identidad.",
						"example": 3
					},
					"documento": {
						"type": "string",
						"description": "Número de documento sin puntos ni guiones.",
						"example": "12345678"
					}
				},
				"required": [
					"tipoDocumento",
					"documento"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultarRUTDGISalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"razonSocial": {
						"type": "string",
						"description": "Razón social del contribuyente según DGI.",
						"example": "Panadería El Buen Pan S.A."
					},
					"domicilioFiscal": {
						"type": "string",
						"description": "Domicilio fiscal tal cual lo devuelve DGI (dirección y localidad juntas, sin separar).",
						"example": "Av. Italia 1234 - Montevideo"
					},
					"tipoContribuyente": {
						"type": "string",
						"description": "Tipo de contribuyente según DGI.",
						"example": "IVA MINIMO"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"razonSocial",
					"domicilioFiscal",
					"tipoContribuyente"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultarRUTDGIEntrada": {
				"properties": {
					"rut": {
						"type": "string",
						"description": "RUT a consultar en DGI.",
						"example": "219314970014"
					}
				},
				"required": [
					"rut"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedLocal": {
				"properties": {
					"id": {
						"type": "string"
					},
					"nombreComercial": {
						"type": "string"
					},
					"nombre": {
						"type": "string"
					},
					"direccion": {
						"type": "string"
					},
					"localidad": {
						"type": "string"
					},
					"departamento": {
						"type": "string"
					},
					"codigoDgi": {
						"type": "number",
						"format": "double"
					},
					"activo": {
						"type": "boolean"
					}
				},
				"required": [
					"id",
					"nombreComercial",
					"nombre",
					"direccion",
					"localidad",
					"departamento",
					"codigoDgi",
					"activo"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedLocalesListadoSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"locales": {
						"items": {
							"$ref": "#/components/schemas/IAPIFixedLocal"
						},
						"type": "array"
					}
				},
				"required": [
					"descripcion",
					"codigoError"
				],
				"type": "object",
				"additionalProperties": false
			},
			"ServiciosRubro": {
				"properties": {
					"version": {
						"type": "number",
						"format": "double"
					},
					"id": {
						"type": "string"
					},
					"codigo": {
						"type": "string"
					},
					"nombre": {
						"type": "string"
					},
					"padreId": {
						"type": "string",
						"nullable": true
					},
					"nombreCompleto": {
						"type": "string"
					},
					"activo": {
						"type": "boolean"
					},
					"esHoja": {
						"type": "boolean"
					},
					"ultimaEdicion": {
						"type": "number",
						"format": "double"
					}
				},
				"required": [
					"version",
					"id",
					"codigo",
					"nombre",
					"padreId",
					"nombreCompleto",
					"activo",
					"esHoja",
					"ultimaEdicion"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedServiciosRubrosListadoSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"rubrosServicios": {
						"items": {
							"$ref": "#/components/schemas/ServiciosRubro"
						},
						"type": "array"
					}
				},
				"required": [
					"descripcion",
					"codigoError"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedCAE": {
				"properties": {
					"tcfe": {
						"type": "number",
						"format": "double",
						"description": "Tipo de CFE (código numérico DGI)."
					},
					"serie": {
						"type": "string"
					},
					"desdeNumero": {
						"type": "number",
						"format": "double"
					},
					"hastaNumero": {
						"type": "number",
						"format": "double"
					},
					"numeroAutorizacion": {
						"type": "string"
					},
					"fechaAutorizacion": {
						"type": "string",
						"description": "Formato dd/mm/aaaa."
					},
					"fechaVencimiento": {
						"type": "string",
						"description": "Formato dd/mm/aaaa."
					},
					"caeEspecial": {
						"type": "string",
						"enum": [
							"0",
							"1",
							"2",
							"3",
							"4"
						],
						"description": "0=ninguno, 1=exonerado, 2=Literal E, 3=Monotributo, 4=Monotributo MIDES."
					},
					"disponible": {
						"type": "boolean"
					},
					"ultimoUsado": {
						"type": "number",
						"format": "double"
					},
					"numerosDisponibles": {
						"type": "number",
						"format": "double",
						"description": "Cantidad de números todavía disponibles en este CAE."
					},
					"xml": {
						"type": "string",
						"description": "XML de autorización del CAE emitido por DGI."
					}
				},
				"required": [
					"tcfe",
					"serie",
					"desdeNumero",
					"hastaNumero",
					"numeroAutorizacion",
					"fechaAutorizacion",
					"fechaVencimiento",
					"caeEspecial",
					"disponible",
					"ultimoUsado",
					"numerosDisponibles",
					"xml"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultaCAESalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"caes": {
						"items": {
							"$ref": "#/components/schemas/IAPIFixedCAE"
						},
						"type": "array"
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"caes"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedConsultaCAEEntrada": {
				"properties": {
					"soloDisponibles": {
						"type": "boolean",
						"description": "Si es `true`, devuelve solo los CAE vigentes (disponibles y no vencidos). Si es `false` o\nno se envía, devuelve todos los CAE cargados en el sistema.",
						"example": false
					}
				},
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedServiciosRubrosAgregarEditarSalida": {
				"properties": {
					"descripcion": {
						"type": "string"
					},
					"codigoError": {
						"type": "string"
					},
					"rubro": {
						"allOf": [
							{
								"$ref": "#/components/schemas/ServiciosRubro"
							}
						],
						"nullable": true
					}
				},
				"required": [
					"descripcion",
					"codigoError",
					"rubro"
				],
				"type": "object",
				"additionalProperties": false
			},
			"IAPIFixedServiciosRubrosAgregarEditarEntrada": {
				"properties": {
					"rubro": {
						"$ref": "#/components/schemas/ServiciosRubro",
						"description": "Rubro a crear o modificar."
					},
					"accion": {
						"type": "string",
						"enum": [
							"agregar",
							"editar"
						],
						"description": "\"agregar\" crea un rubro nuevo; \"editar\" actualiza uno existente.",
						"example": "agregar"
					}
				},
				"required": [
					"rubro",
					"accion"
				],
				"type": "object",
				"additionalProperties": false
			}
		},
		"securitySchemes": {
			"ApiKeyAuth": {
				"type": "apiKey",
				"in": "header",
				"name": "x-api-key"
			},
			"ApiSecretAuth": {
				"type": "apiKey",
				"in": "header",
				"name": "x-api-secret"
			}
		}
	},
	"info": {
		"title": "Fixed - API de Integración",
		"version": "1.0.0",
		"description": "API de Fixed para integradores externos. Autenticación con x-api-key y x-api-secret provistos por Fixed. La empresa se resuelve automáticamente en el servidor; no se envía RUT ni id interno en los requests.",
		"contact": {}
	},
	"paths": {
		"/ventaCrear": {
			"post": {
				"operationId": "VentaCrear",
				"responses": {
					"200": {
						"description": "CFE emitido. Respuesta incluye urlA4, urlTicket y htmlTicket",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedVentaCrearSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación o negocio (ver codigoError)",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedVentaCrearSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Moneda incorrecta",
											"codigoError": "E02",
											"idCFE": "",
											"numero": 0,
											"serie": "",
											"tipoCFE": "",
											"comprobante": "",
											"urlA4": "",
											"urlVerificarCFE": ""
										}
									}
								}
							}
						}
					}
				},
				"description": "Emite un Comprobante Fiscal Electrónico (CFE).\nEn Swagger: Try it out → elegí un ejemplo del dropdown → editá los campos → Execute.\n\nLa respuesta incluye tres opciones para imprimir o mostrar el comprobante:\n\n- `urlA4`: comprobante A4 en PDF.\n\n- `urlTicket`: ticket térmico en PDF (formato estrecho).\n\n- `htmlTicket`: ticket en HTML (útil para preview o impresión web).\n\n### Identificación del cliente\n\nCómo identifica Fixed a un cliente ya existente (para actualizarlo) en vez de crear uno\nnuevo, dentro de la misma empresa y mismo tipoDocumento:\n\n1. Si documento no viene vacío: busca por documento. Si encuentra, actualiza ese cliente.\n   Si no encuentra ningún cliente con ese documento, busca por mailEnvioFactura (ver punto 2);\n   si tampoco encuentra por mail, crea un cliente nuevo con ese documento.\n\n2. Si documento viene vacío pero mailEnvioFactura no: busca por mailEnvioFactura (sin\n   distinguir mayúsculas/minúsculas ni espacios). Si encuentra, actualiza ese cliente. Si no\n   encuentra, crea uno nuevo.\n\n3. Si tanto documento como mailEnvioFactura vienen vacíos: siempre crea un cliente nuevo.\n\nEsto permite, por ejemplo, facturar a nombre de clientes de e-commerce que en un primer\npedido no informan documento (solo mail), y que si en un pedido posterior sí lo informan,\nFixed complete el documento en la misma ficha de cliente en vez de duplicarla.\n\n### Límites de caracteres\n\nEstos campos tienen un largo máximo; si se supera, la request se rechaza con un error\n(no se trunca en silencio):\n\n- `cliente.razonSocial`: 150 caracteres (`E18`).\n\n- `cliente.nombreComercial`: 150 caracteres (`E18`).\n\n- `lineasVenta[].descripcion`: 80 caracteres (`E24`).\n\n- `lineasVenta[].descripcionLarga`: 500 caracteres (`E24`).\n\n### Reintentos seguros (idempotencia)\n\nSi no recibiste la respuesta de un llamado anterior (por ejemplo por un corte de red) y no\nsabés si la venta se llegó a emitir, no reintentes a ciegas: mandá el campo\n`idempotencyKey` la primera vez que intentás emitir esa venta, y reusá exactamente el mismo\nvalor, con exactamente los mismos datos, para reintentar esa misma venta. Fixed te devuelve\nla misma respuesta de la primera vez (sea éxito o error) en vez de reprocesar.\n\nUna `idempotencyKey` queda asociada para siempre a los datos de esa venta puntual: no se\npuede reusar para una venta distinta, ni para reintentar la misma venta con datos\ncorregidos. Si mandás la misma `idempotencyKey` con datos diferentes a los originales,\nFixed devuelve el error `E23`. Para emitir una venta distinta, o la misma venta con datos\ncorregidos, generá una `idempotencyKey` nueva.\n\n**Cómo generar la `idempotencyKey`:** tiene que identificar el intento de emisión en sí,\nnunca derivarse del contenido de la venta. Si la generás a partir de los datos de la venta\n(por ejemplo un hash de sus campos), dos ventas distintas que coincidan en todos sus datos\n(mismo cliente, mismo importe, etc.) van a chocar contra la misma key, y la segunda no se va\na emitir: va a recibir de vuelta el resultado de la primera.\n\n- Recomendado: un UUID v4 generado justo antes de intentar emitir esa venta puntual.\n\n- También válido: tu propio ID de pedido/orden interno, si ya tenés uno único por venta.\n\n`idempotencyKey` es opcional: si no lo mandás, el comportamiento es el de siempre, sin\nprotección contra reintentos duplicados.",
				"tags": [
					"Ventas"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedVentaCrearEntrada"
							}
						}
					}
				}
			}
		},
		"/ventaDevolucionTotalCrear": {
			"post": {
				"operationId": "VentaDevolucionTotalCrear",
				"responses": {
					"200": {
						"description": "Nota de crédito emitida correctamente",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedVentaDevolucionTotalCrearSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación o negocio",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedVentaDevolucionTotalCrearSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Moneda incorrecta",
											"codigoError": "E02",
											"idCFE": "",
											"numero": 0,
											"serie": "",
											"tipoCFE": "",
											"comprobante": "",
											"urlA4": "",
											"urlVerificarCFE": ""
										}
									}
								}
							}
						}
					}
				},
				"description": "Emite una nota de crédito por devolución total de un CFE existente.\n\nSolo se admiten devoluciones **totales**: no es posible devolver un importe parcial.\n`totalADevolver` debe coincidir exactamente con el total de la factura original.\n\nAdmite `idempotencyKey` para reintentos seguros, con el mismo comportamiento que en\nPOST /ventaCrear (ver esa sección para el detalle, incluyendo cómo generar la key\ncorrectamente): mismos datos + misma key devuelve el resultado cacheado; datos distintos\ncon la misma key devuelve `E23`.",
				"tags": [
					"Ventas"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedVentaDevolucionTotalEntrada"
							}
						}
					}
				}
			}
		},
		"/ventaConsulta": {
			"post": {
				"operationId": "VentaConsulta",
				"responses": {
					"200": {
						"description": "Datos del CFE",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedVentaConsultaSalida"
								}
							}
						}
					},
					"500": {
						"description": "CFE no encontrado u otro error",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedVentaConsultaSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "El idCFE no existe para la empresa",
											"codigoError": "C08",
											"idCFE": "",
											"estadoDGI": "",
											"motivoRechazoDGI": "",
											"numero": 0,
											"serie": "",
											"tipoCFE": "",
											"comprobante": "",
											"urlA4": "",
											"urlVerificarCFE": ""
										}
									}
								}
							}
						}
					}
				},
				"description": "Consulta el estado y datos de un CFE emitido previamente.",
				"tags": [
					"Ventas"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedVentaConsultaEntrada"
							}
						}
					}
				}
			}
		},
		"/consultaFacturacionDia": {
			"post": {
				"operationId": "ConsultaFacturacionDia",
				"responses": {
					"200": {
						"description": "Listado de comprobantes del día",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultaFacturacionDiaSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultaFacturacionDiaSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Formato fecha inválida",
											"codigoError": "E08",
											"comprobantes": []
										}
									}
								}
							}
						}
					}
				},
				"description": "Lista los comprobantes emitidos en una fecha.",
				"tags": [
					"Ventas"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedConsultaFacturacionDiaEntrada"
							}
						}
					}
				}
			}
		},
		"/imprimirCFE": {
			"post": {
				"operationId": "ImprimirCFE",
				"responses": {
					"200": {
						"description": "CFE encontrado. Respuesta incluye urlA4, urlTicket y htmlTicket",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedImprimirCFESalida"
								}
							}
						}
					},
					"500": {
						"description": "CFE no encontrado u otro error",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedImprimirCFESalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "El idCFE no existe para la empresa",
											"codigoError": "C08",
											"idCFE": "",
											"estadoDGI": "",
											"motivoRechazoDGI": "",
											"numero": 0,
											"serie": "",
											"tipoCFE": "",
											"comprobante": "",
											"urlA4": "",
											"urlVerificarCFE": ""
										}
									}
								}
							}
						}
					}
				},
				"description": "Genera o regenera las URLs e HTML de impresión de un CFE emitido.\nÚtil si el CFE ya existe pero se necesita volver a obtener sus URLs de impresión.\n\nLa respuesta incluye:\n\n- `urlA4`: comprobante A4 en PDF.\n\n- `urlTicket`: ticket térmico en PDF (formato estrecho).\n\n- `htmlTicket`: ticket en HTML (útil para preview o impresión web).",
				"tags": [
					"Ventas"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedVentaConsultaEntrada"
							}
						}
					}
				}
			}
		},
		"/obtenerProximoNumero": {
			"post": {
				"operationId": "ObtenerProximoNumero",
				"responses": {
					"200": {
						"description": "Serie y próximo número a usar",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedObtenerProximoNumeroSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación o negocio (ver codigoError)",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedObtenerProximoNumeroSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "No existe un CAE disponible para el tipo de comprobante 111.",
											"codigoError": "E02",
											"serie": "",
											"numero": 0,
											"tcfe": 111
										}
									}
								}
							}
						}
					}
				},
				"description": "Consulta la serie y el próximo número que se usaría al emitir, sin emitir nada. El tipo de\ncomprobante se deriva de tipoDocumento y tipo (venta/devolución): RUT es e-Factura /\ne-Factura Nota de Crédito, el resto es e-Ticket / e-Ticket Nota de Crédito. No contempla\ncomprobantes de exportación.\n\nEs solo informativo: el número puede cambiar si otro comprobante se emite entre esta\nconsulta y el llamado real a `ventaCrear` (no reserva el número).",
				"tags": [
					"Ventas"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedObtenerProximoNumeroEntrada"
							}
						}
					}
				}
			}
		},
		"/keepAlive": {
			"get": {
				"operationId": "KeepAlive",
				"responses": {
					"200": {
						"description": "API activa",
						"content": {
							"application/json": {
								"schema": {
									"type": "string"
								}
							}
						}
					}
				},
				"description": "Verifica que la API esté activa. No requiere autenticación ni body.",
				"tags": [
					"General"
				],
				"security": [],
				"parameters": []
			}
		},
		"/validarCredenciales": {
			"post": {
				"operationId": "ValidarCredenciales",
				"responses": {
					"200": {
						"description": "Credenciales válidas",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedValidarCredencialesSalida"
								}
							}
						}
					},
					"401": {
						"description": "Credenciales inválidas",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedValidarCredencialesSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "API key inválida o inactiva",
											"codigoError": "A02",
											"rut": "",
											"nombreEmpresa": ""
										}
									}
								}
							}
						}
					}
				},
				"description": "Verifica que el par x-api-key / x-api-secret sea válido y devuelve los datos\nno sensibles de la empresa asociada. Recomendado como primer paso al integrar.",
				"tags": [
					"General"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": []
			}
		},
		"/consultarCFERecibidos": {
			"post": {
				"operationId": "ConsultarCFERecibidos",
				"responses": {
					"200": {
						"description": "Listado de CFEs recibidos en el rango de fechas",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultarCFERecibidosSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación (ver codigoError)",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultarCFERecibidosSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "El rango entre fechaDesde y fechaHasta no puede superar los 31 días.",
											"codigoError": "E02",
											"cfesRecibidos": []
										}
									}
								}
							}
						}
					}
				},
				"description": "Consulta los CFEs recibidos (comprobantes de compra) emitidos por otras empresas hacia la\nempresa, dentro de un rango de fechas, opcionalmente filtrados por el RUT del\nemisor/proveedor.\n\n`fechaDesde` y `fechaHasta` son formato dd/mm/aaaa, inclusive. El rango entre ambos no\npuede superar los 31 días.\n\nPor default, solo consulta lo que Fixed ya tiene guardado. Con `consultarNuevos: true` se\nfuerza además una consulta en vivo a DGI por CFEs nuevos en ese rango (igual que el botón\n\"Consultar en DGI nuevos CFEs recibidos\" de la web) — puede demorar bastante más, y depende\nde que el mail con el comprobante ya le haya llegado a Fixed para poder guardarlo (DGI solo\ninforma metadatos, no el XML). Si esa consulta falla por cualquier motivo, la respuesta\nigual incluye los datos ya guardados, con una advertencia en `descripcion`.",
				"tags": [
					"Compras"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedConsultarCFERecibidosEntrada"
							}
						}
					}
				}
			}
		},
		"/clienteMostrar": {
			"post": {
				"operationId": "ClienteMostrar",
				"responses": {
					"200": {
						"description": "Cliente encontrado o null si no existe",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedClienteMostrarSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error al buscar cliente",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedClienteMostrarSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "No existe cliente con documento y/o tipo documento indicado",
											"codigoError": "0",
											"cliente": null
										}
									}
								}
							}
						}
					}
				},
				"description": "Busca un cliente activo por tipo y número de documento.",
				"tags": [
					"Clientes"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedClienteMostrarEntrada"
							}
						}
					}
				}
			}
		},
		"/consultarRUTDGI": {
			"post": {
				"operationId": "ConsultarRUTDGI",
				"responses": {
					"200": {
						"description": "Datos del RUT encontrados en DGI",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultarRUTDGISalida"
								}
							}
						}
					},
					"500": {
						"description": "Error al consultar el RUT (ver codigoError)",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultarRUTDGISalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "El RUT '219314970014' no fue encontrado en DGI.",
											"codigoError": "E03",
											"razonSocial": "",
											"domicilioFiscal": "",
											"tipoContribuyente": ""
										}
									}
								}
							}
						}
					}
				},
				"description": "Consulta los datos de un RUT en DGI (razón social, domicilio fiscal y tipo de\ncontribuyente), útil para prellenar los datos de un cliente antes de emitir un\ncomprobante. Requiere que la empresa cuente con firma electrónica vigente en Fixed.\n\nLímite: 20 consultas por minuto por empresa. Si se supera, responde 429.",
				"tags": [
					"Clientes"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedConsultarRUTDGIEntrada"
							}
						}
					}
				}
			}
		},
		"/localesListado": {
			"post": {
				"operationId": "LocalesListado",
				"responses": {
					"200": {
						"description": "Listado de locales de la empresa",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedLocalesListadoSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error al obtener catálogo",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedLocalesListadoSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Empresa no encontrada",
											"codigoError": "E02"
										}
									}
								}
							}
						}
					}
				},
				"description": "Listado de locales de la empresa. No requiere body.",
				"tags": [
					"Catálogos"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": []
			}
		},
		"/serviciosRubrosListado": {
			"post": {
				"operationId": "ServiciosRubrosListado",
				"responses": {
					"200": {
						"description": "Listado de rubros de servicios",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedServiciosRubrosListadoSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error al obtener catálogo",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedServiciosRubrosListadoSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Empresa no encontrada",
											"codigoError": "E02"
										}
									}
								}
							}
						}
					}
				},
				"description": "Listado de rubros de servicios. No requiere body.",
				"tags": [
					"Catálogos"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": []
			}
		},
		"/consultaCAE": {
			"post": {
				"operationId": "ConsultaCAE",
				"responses": {
					"200": {
						"description": "Listado de CAE",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultaCAESalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedConsultaCAESalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Empresa no encontrada",
											"codigoError": "E01",
											"caes": []
										}
									}
								}
							}
						}
					}
				},
				"description": "Consulta los CAE (autorizaciones de numeración) de la empresa, con su información completa.\n\nCon `soloDisponibles: true` devuelve solo los vigentes (`disponible == true` y no vencidos).\nSin ese campo, o en `false`, devuelve todos los CAE cargados, vencidos o agotados incluidos.",
				"tags": [
					"Catálogos"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedConsultaCAEEntrada"
							}
						}
					}
				}
			}
		},
		"/serviciosRubrosAgregarEditar": {
			"post": {
				"operationId": "ServiciosRubrosAgregarEditar",
				"responses": {
					"200": {
						"description": "Rubro creado o editado correctamente",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedServiciosRubrosAgregarEditarSalida"
								}
							}
						}
					},
					"500": {
						"description": "Error de validación",
						"content": {
							"application/json": {
								"schema": {
									"$ref": "#/components/schemas/IAPIFixedServiciosRubrosAgregarEditarSalida"
								},
								"examples": {
									"Example 1": {
										"value": {
											"descripcion": "Acción no es correcta, debe ser agregar o editar",
											"codigoError": "E01",
											"rubro": null
										}
									}
								}
							}
						}
					}
				},
				"description": "Crea o edita un rubro de servicios.",
				"tags": [
					"Catálogos"
				],
				"security": [
					{
						"ApiKeyAuth": [],
						"ApiSecretAuth": []
					}
				],
				"parameters": [],
				"requestBody": {
					"required": true,
					"content": {
						"application/json": {
							"schema": {
								"$ref": "#/components/schemas/IAPIFixedServiciosRubrosAgregarEditarEntrada"
							}
						}
					}
				}
			}
		}
	},
	"servers": [
		{
			"url": "/"
		}
	]
}