Versionado y deprecación
Qué cambios puedes esperar sin avisar, cómo se anuncia un endpoint que se va a retirar y qué headers te lo dicen.
Construir sobre una API es apostar a que lo que funciona hoy funcione en seis meses. Esta página dice exactamente qué puede cambiar sin avisarte, qué no cambia nunca sin un aviso previo, y cómo te enteras.
La regla en una frase
/api/v1 solo crece. Todo lo que hoy responde va a seguir respondiendo igual: si algo tiene que romperse, vive en /api/v2 y los dos conviven al menos seis meses.
Cambios que puedes esperar sin aviso
Estos son aditivos: no rompen a nadie que ya esté integrado, y ocurren seguido.
- Endpoints nuevos.
- Campos nuevos en una respuesta.
- Parámetros opcionales nuevos.
- Valores nuevos en un campo de tipo enum (un estado nuevo, un tipo de canal nuevo).
- Códigos de error nuevos dentro de un
typeque ya existe.
Dos consecuencias prácticas para tu integración:
- No asumas que conoces todos los campos de una respuesta. Ignora los que no uses en vez de fallar. Los schemas del contrato están marcados como abiertos justamente para eso.
- No hagas un
switchexhaustivo sobre un enum sin rama por defecto. Un estado nuevo no debería tumbarte el proceso.
Cambios que nunca ocurren sin ciclo de deprecación
- Quitar un endpoint.
- Quitar o renombrar un campo de una respuesta.
- Renombrar una ruta o un
operationId. - Volver obligatorio un parámetro que era opcional.
- Cambiar el significado de un valor que ya existía.
Cualquiera de estos pasa por el ciclo completo que sigue.
El ciclo de deprecación
Cuando un endpoint se va a retirar, ocurren cuatro cosas antes de que deje de responder:
- Se marca en el contrato. La operación queda con
deprecated: trueenopenapi.public.json, con la fecha de retiro enx-sunsety con qué usar en su lugar enx-alternative. Si generas tu cliente del contrato, la mayoría de los generadores marcan el método como deprecado y tu editor te lo tacha.
- Cada respuesta te lo dice. Mientras siga vivo, el endpoint responde normal —no falla, no cambia su cuerpo— pero agrega estos headers:
| Header | Qué dice |
|---|---|
Deprecation | true. Este endpoint está deprecado. |
Sunset | La fecha a partir de la cual deja de responder, en formato HTTP. |
Link | Enlace a esta página, con la alternativa en el title. |
bash curl -i https://api.met.meteor.com.co/api/v1/... \ -H "Authorization: Bearer met_live_tu_key" # HTTP/1.1 200 OK # Deprecation: true # Sunset: Wed, 01 Jul 2026 00:00:00 GMT # Link: <https://developers.meteor.com.co/guias/versionado.html>; rel="deprecation"; type="text/html"; title="Usa POST /runs"
Si tienes observabilidad sobre tus llamadas salientes, vale la pena registrar una alerta cuando aparezca un Deprecation — es la forma más barata de no enterarte tarde.
- Queda una entrada en el changelog que explica por qué y a qué migrar.
- Pasan al menos seis meses entre el anuncio y el retiro.
Cómo saber contra qué versión generaste
El contrato declara su versión en info.version, y esa versión es la misma que encabeza la entrada más reciente del changelog.
curl -s https://developers.meteor.com.co/public/openapi.public.json | jq .info.version
Si guardas ese número el día que generas tu cliente, comparar contra el changelog te dice exactamente qué pasó en el medio.
Lo que este ciclo no cubre
- Los
typede error son una lista cerrada de cinco valores y no crecen:authentication_error,invalid_request_error,rate_limit_error,agent_error,api_error. Loscodedentro de cada uno sí crecen. Programa contra eltypecuando necesites una rama de control, y usa elcodepara el mensaje. Está todo en Errores, idempotencia y paginación. - Los límites de tu plan no son contrato de API. El rate limit y la cuota pueden cambiar con tu plan; se leen en los headers de cada respuesta, no se asumen. Ver Límites y cuotas.