> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/cli/es/para-devops-y-administradores/automate/json-output.md).

# Leer los resultados como JSON

Obtener los resultados de Devolutions CLI como JSON o YAML, en un solo sobre para cada comando, para que los scripts puedan comprobar el éxito y los errores de forma fiable.

La salida de texto predeterminada está escrita para las personas: su disposición difiere de un comando a otro y puede cambiar. Para un script, pida JSON o YAML. Cada comando responde entonces con el mismo sobre, tanto en los aciertos como en los errores, así que su script comprueba un solo campo para saber qué ocurrió.

## Elegir el formato de salida

<table><thead><tr><th width="250">OPCIÓN</th><th>QUÉ OBTIENE</th></tr></thead><tbody><tr><td><code>--output text</code> (predeterminado)</td><td>Texto legible, distinto para cada comando. No lo analice.</td></tr><tr><td><code>--output json</code> or <code>--json</code></td><td>El sobre JSON, con sangría.</td></tr><tr><td><code>--output yaml</code> or <code>--yaml</code></td><td>El mismo sobre, en YAML.</td></tr></tbody></table>

Estas opciones funcionan con cada comando. Use solo una de ellas por comando: `--json` con `--yaml`, o `--json` con `--output yaml`, detiene el comando con el error `conflictingOptions`. `--json` con `--output json` se acepta.

```bash
devo vault list --json
```

## El sobre

```json
{
  "status": "success",
  "command": "vault.list",
  "operationId": null,
  "data": [ ],
  "warnings": [],
  "errors": []
}
```

<table><thead><tr><th width="180">CAMPO</th><th>QUÉ CONTIENE</th></tr></thead><tbody><tr><td><code>status</code></td><td><code>success</code>, <code>partial</code> o <code>error</code>. Compruebe este campo primero. <code>partial</code> significa que el comando terminó, pero que algunos elementos fallaron: <code>data</code> contiene lo que tuvo éxito, <code>errors</code> enumera lo que no, y el código de salida es <code>0</code>.</td></tr><tr><td><code>command</code></td><td>El comando que se ejecutó, como una ruta en notación de puntos como <code>vault.list</code> o <code>entry.references</code>. Los alias y los valores de opción no lo cambian.</td></tr><tr><td><code>operationId</code></td><td>Un identificador cuando el comando produjo uno; de lo contrario, <code>null</code>.</td></tr><tr><td><code>data</code></td><td>El resultado. Su forma depende del comando.</td></tr><tr><td><code>warnings</code></td><td>Avisos que no detuvieron el comando.</td></tr><tr><td><code>errors</code></td><td>Un elemento por error. Vacío cuando <code>status</code> es <code>success</code>; no vacío cuando es <code>partial</code> o <code>error</code>.</td></tr></tbody></table>

Cada elemento de `errors` tiene estos campos:

<table><thead><tr><th width="180">CAMPO</th><th>QUÉ CONTIENE</th></tr></thead><tbody><tr><td><code>code</code></td><td>Un código de error estable, como <code>missingParameter</code> o <code>conflictingOptions</code>. Base las decisiones de su script en este campo.</td></tr><tr><td><code>message</code></td><td>Una explicación para las personas. Su redacción puede cambiar, así que no la use para una coincidencia.</td></tr><tr><td><code>target</code></td><td>La opción, el argumento o el recurso del que trata el error, cuando se conoce.</td></tr><tr><td><code>blockerStatus</code>, <code>stageStatuses</code></td><td>Detalles del runtime del espacio de trabajo, cuando el error procede de él.</td></tr></tbody></table>

Una línea de comandos que Devolutions CLI no puede analizar, como un comando mal escrito, también devuelve el sobre, con errores codificados `usageError`, y a veces un elemento `usageSuggestion` que propone la ortografía correcta.

## Usarlo en un script

Compruebe primero el código de salida y luego lea el sobre. Un resultado `partial` termina con `0`, así que informe también `errors` cuando el código de salida es `0`. Por ejemplo, con `jq`:

{% tabs %}
{% tab title="Bash" %}

```bash
if result=$(devo vault list --json); then
  echo "$result" | jq -r '.data[].name'
  # A partial result exits with 0 and still lists errors.
  echo "$result" | jq -r '.errors[] | "\(.code): \(.message)"' >&2
else
  echo "$result" | jq -r '.errors[] | "\(.code): \(.message)"' >&2
  exit 1
fi
```

{% endtab %}

{% tab title="PowerShell" %}

```powershell
$result = devo vault list --json | ConvertFrom-Json
# 'partial' and 'error' both list their errors.
$result.errors | ForEach-Object { Write-Warning "$($_.code): $($_.message)" }
if ($result.status -eq 'error') {
    exit 1
}
# 'success' or 'partial': data holds what succeeded.
$result.data | ForEach-Object { $_.name }
```

{% endtab %}
{% endtabs %}

Los códigos de salida se enumeran en [Códigos de salida y errores](/cli/es/referencia/exit-codes-and-errors.md).

## Salida estándar y salida de error

<table><thead><tr><th width="200">FLUJO</th><th>QUÉ VA AHÍ</th></tr></thead><tbody><tr><td><strong>Salida estándar</strong></td><td>El sobre, en JSON o YAML, para los aciertos y los errores. En texto, el resultado. En texto, los errores de <code>devo login</code> y de los comandos disponibles solo en Devolutions Cloud o solo en Devolutions Server también van aquí, como <code>&#x3C;code>: &#x3C;message></code>.</td></tr><tr><td><strong>Salida de error</strong></td><td>En texto, la mayoría de los errores, como <code>&#x3C;code>: &#x3C;message></code>. Avisos sobre lo que hace Devolutions CLI, como <code>Starting Devolutions CLI daemon...</code>, y las solicitudes y los mensajes del inicio de sesión interactivo.</td></tr></tbody></table>

Así que, en JSON o YAML, lea solo la salida estándar: contiene exactamente un sobre. La excepción es `devo secret run`, descrita más abajo.

## Silencioso o detallado

Los avisos sobre lo que hace Devolutions CLI, como iniciar el proceso en segundo plano, se escriben en el error estándar:

* En la salida de texto aparecen de forma predeterminada. `--quiet` los oculta.
* En la salida JSON o YAML, están ocultas de forma predeterminada. `--verbose` las muestra, todavía en el error estándar.

`--quiet` y `--verbose` juntos detienen el comando con `conflictingOptions`.

## Bueno saberlo

* `devo secret run` no envuelve la salida del programa que inicia: la salida del programa va a su terminal a medida que el programa la escribe, con los valores secretos enmascarados. Cómo vuelven sus propios errores depende de cuándo ocurren:
  * Un inicio que Devolutions CLI rechaza antes de resolver nada, como una referencia en los argumentos del comando (`secretLaunchArgumentReference`), un `--check` fallido, o un programa que no puede iniciarse, devuelve el sobre en la salida estándar con `--json` o `--yaml`.
  * Una referencia que no se resuelve se escribe siempre en el error estándar como `<code>: <message>`, incluso con `--json`, y el programa no se inicia.
  * Un programa detenido por `--timeout-seconds` termina con `124`; una ejecución interrumpida termina con `130`.
  * De lo contrario, `devo secret run` devuelve el propio código de salida del programa. Consulte [Códigos de salida y errores](/cli/es/referencia/exit-codes-and-errors.md).
* Cada comando y sus opciones están en [Comandos](/cli/es/referencia/commands.md).

## Siguiente

* [Run without prompts](/cli/es/para-devops-y-administradores/automate/non-interactive.md)
* [Exit codes and errors](/cli/es/referencia/exit-codes-and-errors.md)
* [Global options](/cli/es/referencia/global-options.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/cli/es/para-devops-y-administradores/automate/json-output.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
