Lo que /v1 promete
Mientras v1 esté vigente:
Dos reglas para tu cliente:
1
No uses parseo estricto
Nada que rechace campos desconocidos.
2
Ramificá por el código de error, no por el mensaje
El código es estable; el texto puede mejorarse. Ver todos los
errores.
Cómo se depreca una versión
Si alguna vez salev2 y v1 se discontinúa:
1
Las respuestas empiezan a avisar
v1 lleva las cabeceras Deprecation y Sunset (RFC 8594), con la fecha a
partir de la cual deja de responder.2
Con al menos seis meses de anticipación
No es una cortesía: es la política.
Hoy
v1 está vigente y no se manda ninguna de las dos cabeceras. Medido: se
listaron todas las cabeceras de una respuesta de /v1 y del documento OpenAPI,
y no aparece ninguna.Que estén ausentes es deliberado. Mandar un Sunset «por las dudas» te diría
que migres cuando no hay a dónde.El changelog
2026-07-27 · El prefijo de las API keys pasa de fya_ a emi_
El producto se llamaba FacturaYa y pasó a llamarse Emissa. Con eso:
- Las claves nuevas nacen
emi_test_…/emi_live_…. - La cabecera de modo en las respuestas pasó de
X-Facturaya-ModeaX-Emissa-Mode.
Ninguna clave dejó de funcionar. La autenticación resuelve por hash del
secreto completo, no por el prefijo: el prefijo es metadato de presentación
y no participa de validar nada. No hubo migración de datos, y las claves
fya_ siguen autenticando sin plazo de vencimiento.Cómo está protegido que las claves viejas sigan andando
Cómo está protegido que las claves viejas sigan andando
Hay una prueba de regresión, y la prueba está verificada por mutación. Poniendo la
«validación razonable» que alguien podría agregar:el caso falla enseguida:Sin esa prueba, ese
if de una línea desconectaría en silencio a todo integrador
que no haya rotado su clave, y el resto de la suite seguiría en verde.2026-07-26 · Las API keys se mandan en X-API-Key
Antes viajaban en Authorization: Bearer <key>. Ahora van en su propia cabecera.
Es una ruptura del lado del pedido, y es la de mayor impacto de las dos. Lo que
la hace tolerable es que no falla en silencio: el camino viejo devuelve un
401 que dice exactamente qué hacer.
La respuesta del camino viejo
La respuesta del camino viejo
Por qué esas dos rupturas fueron posibles
Porque ocurrieron antes del primer cliente. En julio de 2026 no había un solo integrador externo, así que el costo de romper era cero y el beneficio —un contrato coherente con el nombre del producto y una cabecera de autenticación que no se confunde con un JWT— era permanente. Un changelog que arranca vacío es un changelog en el que no se confía: o el producto no cambió nunca, o los cambios no se anotaron. Estos dos están acá porque pasaron.Lo que no está versionado, y por qué
No todo el backend es/v1:
Qué sigue
Todos los errores
Ramificá por código, no por texto.
Referencia de la API
El contrato de
/v1, generado desde el código.