Editar una especificación de API manualmente es una tarea precisa y repetitiva: renombrar campos, añadir valores de enumeración o ajustar propiedades obligatorias. La CLI de Apidog permite delegar estos cambios a un agente de IA sin perder control: valida antes de escribir, trabaja en una rama aislada y deja la fusión pendiente de revisión humana.
Este flujo complementa la capacidad de permitir que un agente cree documentación de API. Crear recursos suele ser aditivo; modificar un contrato existente requiere controles para evitar eliminar campos o introducir cambios disruptivos.
Qué significa actualizar una especificación con la CLI
En Apidog, una especificación reúne los endpoints y esquemas de datos de un proyecto. Puedes actualizarla mediante tres comandos:
-
endpoint update: modifica una ruta, parámetro o respuesta. -
schema update: modifica un modelo de datos referenciado por endpoints. -
import: importa un archivo OpenAPI completo para conciliarlo con el proyecto.
Antes de automatizar cualquiera de estos comandos, ten en cuenta dos reglas:
- Las actualizaciones reemplazan recursos completos.
- Los cambios deben hacerse en una rama de IA antes de llegar a la rama principal.
Regla crítica: update reemplaza, no fusiona
Los comandos update no funcionan como JSON Patch. Si envías un array parcial de parameters, la CLI no actualiza solo ese parámetro: reemplaza el array completo y elimina los parámetros que no incluiste.
Usa siempre el ciclo leer → modificar → validar → escribir sobre el objeto completo:
# 1. Obtener el recurso completo
apidog endpoint get <endpointId> --project <projectId>
# 2. Editar localmente la estructura completa.
# Conserva todos los campos que no quieres modificar.
# 3. Validar el objeto completo contra el esquema de la CLI
apidog cli-schema get endpoint-create
apidog cli-schema validate endpoint-create --file ./endpoint-full.json
# 4. Escribir de nuevo el recurso completo
apidog endpoint update <endpointId> --project <projectId> --file ./endpoint-full.json
Incluye esta instrucción explícitamente en el prompt o las reglas de tu agente:
Nunca envíes un objeto parcial a
update. Recupera el recurso completo, modifícalo localmente, valídalo y vuelve a enviarlo completo.
Si el agente omite get, puede eliminar campos silenciosamente. Si ejecuta cli-schema validate antes de escribir, detecta errores de estructura antes de que lleguen al proyecto.
Flujo seguro: usar una rama de IA
No empieces dando acceso directo a la rama principal. Usa una rama de IA para aislar el trabajo del agente: los cambios no se fusionan hasta que una persona los revisa y aprueba.
Paso 1: crear la rama de IA
apidog branch create --project <projectId> --type ai \
--from main --name "ai/20260713-from-main-refund-fields"
Usa una convención como:
ai/AAAA-MM-DD-origen-característica
El valor de --from debe ser la rama principal o una rama de sprint normal, no una rama general. Las ramas de IA sin diferencias respecto a su origen se autoarchivan después de 24 horas.
Paso 2: llevar los recursos existentes a la rama
Una rama de IA empieza vacía: no clona automáticamente los recursos de origen. Antes de editar un endpoint o esquema existente, llévalo a la rama con pick-to:
apidog branch pick-to --project <projectId> --type ai \
--from main --to "ai/20260713-from-main-refund-fields" \
--endpoint-ids <ids>
Solo necesitas este paso para recursos existentes que el agente vaya a modificar o eliminar. Los recursos nuevos pueden crearse directamente en la rama.
Paso 3: ejecutar el ciclo leer-modificar-escribir
Indica la rama con --branch en cada operación:
apidog endpoint get <endpointId> --project <projectId> \
--branch "ai/20260713-from-main-refund-fields"
apidog endpoint update <endpointId> --project <projectId> \
--branch "ai/20260713-from-main-refund-fields" \
--file ./endpoint-full.json
La rama principal permanece intacta. Si el agente comete un error, el impacto queda contenido en una rama desechable.
Paso 4: revisar y fusionar
Los cambios de una rama de IA no se escriben automáticamente en el destino. Si la rama principal está protegida, usa una solicitud de fusión:
apidog merge-request --help
apidog branch merge --project <projectId> --type ai \
--from "ai/20260713-from-main-refund-fields" \
--to main --endpoint-ids <ids>
Revisa el diff antes de aprobarlo. La fusión directa con branch merge requiere permiso de edición directa en las ramas de origen y destino. Para una rama principal protegida, usa merge-request y apruébalo desde el cliente de Apidog.
Ejemplo: renombrar un campo sin perder propiedades
Supongamos que debes renombrar amount a amountCents en el esquema Refund, porque el valor pasará a expresarse en céntimos enteros.
Primero, recupera el esquema completo desde la rama de IA:
apidog schema get <refundSchemaId> --project $PID \
--branch "ai/20260713-from-main-refund-fields"
Después, edita el jsonSchema completo. No envíes únicamente la propiedad modificada:
{
"name": "Refund",
"jsonSchema": {
"type": "object",
"required": ["orderId", "amountCents"],
"properties": {
"orderId": { "type": "string" },
"amountCents": { "type": "integer" },
"reason": { "type": "string" }
}
}
}
Observa que orderId y reason permanecen en la carga útil. Esto es obligatorio porque update reemplaza el recurso.
Valida y actualiza en la rama aislada:
# 1. Validar el objeto completo
apidog cli-schema validate schema-create --file ./refund-full.json
# 2. Actualizar el esquema en la rama de IA
apidog schema update <refundSchemaId> --project $PID \
--branch "ai/20260713-from-main-refund-fields" \
--file ./refund-full.json
Finalmente, revisa el diff. Deberías ver únicamente el cambio esperado: amount pasa a ser amountCents y cambia a integer.
Bloquear cambios disruptivos antes de fusionar
Renombrar un campo obligatorio es un cambio disruptivo. Los clientes que sigan enviando amount fallarán la validación.
Añade una regla de clasificación al conjunto de instrucciones del agente:
Antes de fusionar cualquier cambio en la especificación, clasifícalo:
- No disruptivo: nuevo campo opcional, nuevo endpoint o restricción flexibilizada.
→ Resumir el cambio y proceder a la solicitud de fusión.
- Disruptivo: campo renombrado o eliminado, nuevo campo obligatorio o tipo ajustado.
→ DETENER.
Informar del cambio disruptivo y de los endpoints afectados.
Esperar aprobación humana explícita.
La rama de IA convierte esta regla en un control real: el agente puede preparar y validar el cambio, pero no llega a producción sin aprobación.
Actualizar desde un archivo OpenAPI
Si el cambio ya existe en un archivo OpenAPI —por ejemplo, generado desde código o mantenido por otro equipo— puedes importarlo en lugar de reconstruir cada modificación campo por campo:
apidog import --project <projectId> --format openapi --file ./openapi.json \
--branch "ai/20260713-from-main-refund-fields"
import acepta OpenAPI 3.x, Swagger 2.0, Postman y otros formatos. Ejecútalo primero en una rama de IA para revisar el impacto antes de fusionar.
Después de la fusión, exporta la especificación conciliada para comprobar el resultado:
apidog export --project <projectId> --format openapi \
--oas-version 3.1 --output ./openapi.json
Usa import cuando la fuente de la verdad esté fuera de Apidog. Usa endpoint update o schema update cuando Apidog sea la fuente de la verdad y necesites un cambio puntual.
Revertir cambios del agente
Si el resultado no es correcto y aún no se ha fusionado, la rama principal no necesita ninguna reparación. Simplemente archiva la rama de IA:
apidog branch archive "ai/20260713-from-main-refund-fields" \
--project <projectId> --type ai
Además, una rama de IA sin diferencias aceptadas se autoarchiva después de 24 horas. La rama funciona como un botón de deshacer para cambios de especificación.
Permisos de edición
Si update o import devuelven un error de permisos, es posible que los Permisos de Edición Externa de IA estén desactivados en el proyecto.
El flujo con rama de IA está diseñado para ese escenario: el agente edita una rama aislada y una persona aprueba la fusión. Si necesitas habilitar ediciones directas, la opción está en:
Configuración del Proyecto
→ Configuración de Características
→ Configuración de Características de IA
Esta configuración está disponible en el cliente de Apidog 2.8.32+. Si el agente encuentra un bloqueo de permisos, debe informar la situación y pedir una decisión humana, no buscar una alternativa silenciosa.
Errores comunes
Enviar una actualización parcial
update reemplaza; no fusiona. Recupera el objeto completo, edítalo, valídalo y envíalo completo.
Editar una rama de IA vacía
Las ramas de IA no contienen automáticamente los recursos de origen. Usa pick-to antes de modificar recursos existentes.
Usar un origen incorrecto en --from
La rama de origen debe ser la principal o una rama de sprint normal, nunca una rama general.
Omitir cli-schema validate
La validación detecta cargas útiles mal formadas localmente. Sin este paso, un error tipográfico puede convertirse en una llamada fallida o una fusión defectuosa.
Fusionar cambios disruptivos sin avisar
Un campo requerido renombrado o eliminado puede romper clientes existentes. Obliga al agente a clasificar cambios y a detenerse ante modificaciones disruptivas.
Preguntas frecuentes
¿Puedo permitir que el agente edite main directamente?
Sí, habilitando los Permisos de Edición Externa de IA. Sin embargo, una rama de IA es más segura porque ningún cambio llega a main hasta que apruebes la fusión.
¿Cuál es la diferencia entre branch merge y merge-request?
branch merge aplica los cambios inmediatamente y requiere permisos de edición directa. merge-request abre una solicitud revisable, adecuada cuando la rama principal está protegida.
¿El agente necesita la aplicación de escritorio de Apidog?
No. La CLI funciona de forma independiente. La aplicación solo es necesaria para activar una vez la configuración de Permisos de Edición Externa de IA.
¿Cómo evito que el agente invente nombres de campos?
Usa el ciclo get → cli-schema validate → update. Una carga útil con un campo inventado falla la validación local antes de llegar al proyecto.
Conclusión
Automatizar actualizaciones de especificaciones de API con un agente es seguro si aplicas tres controles:
- Trabaja en una rama de IA aislada.
- Trata cada
updatecomo una operación completa de leer-modificar-escribir. - Exige revisión humana antes de fusionar, especialmente ante cambios disruptivos.
Configura la rama, entrega al agente estas reglas y convierte el mantenimiento de la especificación en un diff revisable y auditable. Descarga Apidog para usar la CLI y combínalo con la automatización para crear documentación de API y cubrir tanto la creación como el mantenimiento del contrato.
Top comments (0)