Saltearse al contenido

Versionado y obsolescencia

La versión es un segmento de ruta, y es el único lugar donde aparece:

https://api.zelnum.com/api/v1

Hay una única versión activa. Su identidad en el documento OpenAPI es 1.0.0; el segmento de ruta v1 es el que usas como destino. Los cuerpos de respuesta deliberadamente no repiten una versión, así que no hay un segundo campo que mantener sincronizado.

ClaseEjemplosEfecto sobre ti
AditivoUn endpoint nuevo, un campo de solicitud opcional nuevo, un campo de respuesta nuevo, un producto nuevo en el catálogoNinguno. Sin subida de versión, sin acción.
De comportamientoUn valor nuevo dentro de una enumeración existente, como error_code o billing_status; un valor predeterminado cambiadoNormalmente ninguno, pero puede romper la coincidencia exhaustiva.
IncompatibleEliminar o renombrar un campo, cambiar un tipo, cambiar lo que significa un estado, exigir un encabezado nuevoRequiere una versión nueva.
ContratoLa documentación se equivocaba sobre lo que hace la APINinguno — pero consulta a continuación.

La documentación se corrige en el mismo lugar cuando el comportamiento de la API estaba mal descrito. Ese es un cambio de documentación, no un cambio de contrato: la API no se movió, la descripción sí. Como una corrección es justo el suceso que no puedes ver en una entrada de registro de cambios del tipo «nada cambió», las correcciones se enumeran explícitamente en el registro de cambios.

Si una corrección cambia algo sobre lo que habías construido, aparece allí como una nota en lugar de una edición silenciosa.

Cuando una operación queda obsoleta, se marca deprecated: true en el documento OpenAPI y este sitio documenta el reemplazo. La operación sigue funcionando durante el periodo de aviso, y el periodo de aviso se indica donde se anuncia la obsolescencia.

Una obsolescencia nunca coincide con la versión en que se introduce su reemplazo. Ambas están activas a la vez, así que puedes migrar según tu propio calendario y no durante un incidente.

POST /v1/realtime/detect se mantiene para clientes de prelanzamiento y está marcado como obsoleto en el contrato. Las integraciones nuevas deberían usar los endpoints específicos de cada serie.

Es un cambio de nombre, no un rediseño — el cuerpo de la solicitud y la respuesta tienen la misma forma:

HeredadoActual
EndpointPOST /v1/realtime/detectPOST /v1/realtime/check/phone o POST /v1/realtime/check/email
SerieImplícita en los productos que envíasExplícita en la ruta, y debe coincidir con ellos
Campo de productosproducts (alias)product_ids
Idempotency-KeyObligatorioObligatorio

Migrar es un cambio de dos líneas:

Ventana de terminal
# Before
curl -X POST "https://api.zelnum.com/api/v1/realtime/detect" \
-H "X-API-Key: YOUR_KEY_HERE" \
-H "Idempotency-Key: UNIQUE_REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{"identifier":"+8613800138000","products":[47]}'
# After — the series moves into the path and the field is renamed
curl -X POST "https://api.zelnum.com/api/v1/realtime/check/phone" \
-H "X-API-Key: YOUR_KEY_HERE" \
-H "Idempotency-Key: UNIQUE_REQUEST_ID" \
-H "Content-Type: application/json" \
-d '{"identifier":"+8613800138000","product_ids":[47]}'

Enviar product_ids y products a la vez en una misma solicitud se rechaza como 400 invalid_realtime_request, así que los dos no deben mezclarse durante un despliegue por etapas.