{"openapi":"3.1.0","info":{"title":"Tipo de Cambio — API pública","version":"1.0.0","description":"Datos de mercado (TES, TRM) y contenido publicado de Tipo de Cambio. Solo lectura, abierta (sin llave) y con CORS. Todas las fechas —entrada y salida— son epoch Unix en segundos. Los artículos devuelven metadatos y el resumen (TLDR); el cuerpo completo vive en la URL de cada artículo.","contact":{"name":"Tipo de Cambio","email":"contacto@tipodecambio.co","url":"https://tipodecambio.co"}},"servers":[{"url":"https://tipodecambio.co/api/v1"}],"paths":{"/meta":{"get":{"summary":"Metadatos y descubrimiento de la API","responses":{"200":{"description":"OK"}}}},"/health":{"get":{"summary":"Estado del servicio","responses":{"200":{"description":"{ ok: true }"}}}},"/sections":{"get":{"summary":"Secciones disponibles en la región","parameters":[{"name":"region","in":"query","required":false,"description":"Edición regional. Omitir = región por defecto.","schema":{"type":"string","enum":["co","us"],"default":"co"}}],"responses":{"200":{"description":"Lista de secciones"},"400":{"description":"región inválida"}}}},"/tags":{"get":{"summary":"Temas (tags) con conteo de artículos publicados","parameters":[{"name":"region","in":"query","required":false,"description":"Edición regional. Omitir = región por defecto.","schema":{"type":"string","enum":["co","us"],"default":"co"}}],"responses":{"200":{"description":"Lista de temas"},"400":{"description":"región inválida"}}}},"/articles":{"get":{"summary":"Artículos publicados (metadatos + resumen)","parameters":[{"name":"region","in":"query","required":false,"description":"Edición regional. Omitir = región por defecto.","schema":{"type":"string","enum":["co","us"],"default":"co"}},{"name":"section","in":"query","required":false,"schema":{"type":"string","enum":["aprende","actualidad","analisis"]}},{"name":"tag","in":"query","required":false,"schema":{"type":"string"}},{"name":"opinion","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1}}],"responses":{"200":{"description":"Lista de artículos"},"400":{"description":"parámetro inválido"}}}},"/articles/{slug}":{"get":{"summary":"Un artículo por slug (incluye fuentes y FAQ)","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Edición regional. Omitir = región por defecto.","schema":{"type":"string","enum":["co","us"],"default":"co"}}],"responses":{"200":{"description":"Artículo"},"404":{"description":"no existe / borrador / fuera de región"}}}},"/tes":{"get":{"summary":"Series TES cero cupón (Banco de la República)","parameters":[{"name":"series","in":"query","required":false,"description":"Lista separada por comas. Por defecto: pesos_1a,pesos_5a,pesos_10a.","schema":{"type":"array","items":{"type":"string","enum":["pesos_1a","pesos_5a","pesos_10a","uvr_1a","uvr_5a","uvr_10a"]}}},{"name":"from","in":"query","required":false,"description":"Epoch inicial inclusive. Omitir = toda la historia.","schema":{"type":"integer","minimum":0,"example":1769817600}},{"name":"to","in":"query","required":false,"description":"Epoch final inclusive.","schema":{"type":"integer","minimum":0,"example":1769817600}},{"name":"date","in":"query","required":false,"description":"Un solo día (atajo de from=to). No se combina con from/to.","schema":{"type":"integer","minimum":0,"example":1769817600}}],"responses":{"200":{"description":"{ series: { serie: [[epoch, valor], …] } }"},"400":{"description":"parámetro inválido"}}}},"/trm":{"get":{"summary":"TRM — precio oficial del dólar (COP/USD)","parameters":[{"name":"from","in":"query","required":false,"description":"Epoch inicial inclusive. Omitir = toda la historia.","schema":{"type":"integer","minimum":0,"example":1769817600}},{"name":"to","in":"query","required":false,"description":"Epoch final inclusive.","schema":{"type":"integer","minimum":0,"example":1769817600}},{"name":"date","in":"query","required":false,"description":"Un solo día (atajo de from=to). No se combina con from/to.","schema":{"type":"integer","minimum":0,"example":1769817600}}],"responses":{"200":{"description":"{ points: [[epoch, valor], …] }"},"400":{"description":"parámetro inválido"}}}}}}