openapi: 3.2.0 info: title: Cambio Uruguay Aduana API version: 1.0.0 description: '# Cambio Uruguay API API completa para obtener tipos de cambio y información de casas de cambio en Uruguay.' contact: name: Cambio Uruguay url: https://cambio-uruguay.com email: info@cambio-uruguay.com license: name: MIT url: https://opensource.org/licenses/MIT termsOfService: https://cambio-uruguay.com/terminos servers: - url: https://api.cambio-uruguay.com description: Servidor de Producción - url: http://localhost:3528 description: Servidor de Desarrollo tags: - name: Aduana description: 'Guía de problemas con la aduana uruguaya: hechos legales citados, procedimientos y testimonios de r/uruguay' paths: /aduana: get: tags: - Aduana summary: Guía de problemas con la aduana uruguaya (normas, procedimientos y testimonios… description: 'Datos que alimentan /problemas-con-la-aduana-uruguay: doce problemas típicos de compras importadas y encomiendas (paquete retenido, factura exigida, franquicia agotada, etc.), cada uno con la norma aplicable, los pasos a seguir y testimonios reales citados de r/uruguay. Se sincroniza una vez por semana (pm2 `currency-aduana`, lunes 09:30 UTC): se cosechan hilos nuevos de Reddit, se etiquetan con IA y se re-chequean los hechos legales contra la norma oficial (impo.com.uy / gub.uy) con un modelo con acceso a búsqueda — la IA solo puede señalar un cambio de ley para revisión humana, nunca publicarlo directamente. Cada hecho (`facts[]`) trae su fuente (`sourceId`, resoluble en `sources[]`) y dos fechas que NO son intercambiables: `verifiedAt` es exclusivamente humana — significa que una persona abrió el decreto y leyó el número — mientras que `aiCheckedAt` es lo que escribe el re-chequeo semanal cuando un modelo con acceso a búsqueda confirmó el mismo valor leyendo la norma; es una señal de frescura, no de verificación humana. La página debe mostrarlas por separado ("verificado contra la norma" vs. "último control automático"), nunca fusionadas. `stale` es `true` cuando el job semanal no corrió en más de dos semanas (o nunca corrió). Un problema sin testimonios de Reddit igual se publica: la norma y el procedimiento son el contenido, los testimonios son corroboración.' responses: '200': description: Hechos legales, problemas con procedimiento y testimonios citados content: application/json: schema: type: object properties: facts: type: array items: type: object properties: id: type: string example: franquicia.tope_anual_usd label: type: string value: oneOf: - type: number - type: string unit: type: - string - 'null' example: USD sourceId: type: string article: type: - string - 'null' verifiedAt: type: string description: Fecha ISO — escrita SOLO por un humano que leyó la norma. aiCheckedAt: type: - string - 'null' description: Fecha ISO — escrita SOLO por el re-chequeo semanal de la IA. origin: type: string enum: - baseline - ai problems: type: array items: type: object properties: id: type: string example: retenido title: type: string symptom: type: string norm: type: string sourceIds: type: array items: type: string steps: type: array items: type: string deadline: type: - string - 'null' claimTemplate: type: - string - 'null' verified: type: boolean quotes: type: array items: type: object properties: text: type: string author: type: string date: type: string score: type: number permalink: type: string reports: type: number example: 12 sources: type: array items: type: object properties: id: type: string title: type: string norm: type: string url: type: string checkedAt: type: string updatedAt: type: - string - 'null' stale: type: boolean description: true cuando el job semanal no corrió en más de dos semanas operationId: getAduana x-operation-id-source: derived