> 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/it/per-devops-e-amministratori/automate/json-output.md).

# Leggere i risultati come JSON

Ottenere i risultati di Devolutions CLI come JSON o YAML, in una sola busta per ogni comando, così gli script possono verificare esito ed errori in modo affidabile.

L’output di testo predefinito è scritto per le persone: la disposizione cambia da un comando all’altro e può cambiare. Per uno script, chieda JSON o YAML. Ogni comando risponde allora con la stessa busta, per i successi e per gli errori, così lo script controlla un solo campo per sapere che cosa è successo.

## Scegliere il formato di output

<table><thead><tr><th width="250">OPZIONE</th><th>CHE COSA OTTIENE</th></tr></thead><tbody><tr><td><code>--output text</code> (predefinito)</td><td>Testo leggibile, diverso per ogni comando. Non lo analizzi.</td></tr><tr><td><code>--output json</code> or <code>--json</code></td><td>L’involucro JSON, rientrato.</td></tr><tr><td><code>--output yaml</code> or <code>--yaml</code></td><td>Lo stesso involucro, in YAML.</td></tr></tbody></table>

Queste opzioni funzionano con ogni comando. Ne usi solo una per comando: `--json` con `--yaml`, oppure `--json` con `--output yaml`, ferma il comando con l’errore `conflictingOptions`. `--json` con `--output json` è accettato.

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

## L’involucro

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

<table><thead><tr><th width="180">CAMPO</th><th>CHE COSA CONTIENE</th></tr></thead><tbody><tr><td><code>status</code></td><td><code>success</code>, <code>partial</code> o <code>error</code>. Controlli prima questo campo. <code>partial</code> significa che il comando è terminato, ma alcuni elementi non sono riusciti: <code>data</code> contiene ciò che è riuscito, <code>errors</code> elenca ciò che non lo è, e il codice di uscita è <code>0</code>.</td></tr><tr><td><code>command</code></td><td>Il comando eseguito, come percorso in notazione puntata quale <code>vault.list</code> o <code>entry.references</code>. Gli alias e i valori delle opzioni non lo cambiano.</td></tr><tr><td><code>operationId</code></td><td>Un identificatore quando il comando ne ha prodotto uno, altrimenti <code>null</code>.</td></tr><tr><td><code>data</code></td><td>Il risultato. La sua forma dipende dal comando.</td></tr><tr><td><code>warnings</code></td><td>Avvisi che non hanno interrotto il comando.</td></tr><tr><td><code>errors</code></td><td>Un elemento per errore. Vuoto quando <code>status</code> è <code>success</code>; non vuoto quando è <code>partial</code> o <code>error</code>.</td></tr></tbody></table>

Ogni elemento di `errors` ha questi campi:

<table><thead><tr><th width="180">CAMPO</th><th>CHE COSA CONTIENE</th></tr></thead><tbody><tr><td><code>code</code></td><td>Un codice di errore stabile, come <code>missingParameter</code> o <code>conflictingOptions</code>. Basi le decisioni dello script su questo campo.</td></tr><tr><td><code>message</code></td><td>Una spiegazione per le persone. La sua formulazione può cambiare, quindi non la usi per un confronto.</td></tr><tr><td><code>target</code></td><td>L’opzione, l’argomento o la risorsa di cui parla l’errore, quando è nota.</td></tr><tr><td><code>blockerStatus</code>, <code>stageStatuses</code></td><td>Dettagli del runtime dello spazio di lavoro, quando l’errore proviene da esso.</td></tr></tbody></table>

Una riga di comando che Devolutions CLI non può analizzare, come un comando scritto male, restituisce anch’essa la busta, con errori codificati `usageError` e a volte un elemento `usageSuggestion` che propone l’ortografia giusta.

## Usarlo in uno script

Controlli prima il codice di uscita, poi legga la busta. Un risultato `partial` termina con `0`, quindi segnali anche `errors` quando il codice di uscita è `0`. Per esempio, 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 %}

I codici di uscita sono elencati in [Codici di uscita ed errori](/cli/it/riferimento/exit-codes-and-errors.md).

## Output standard e output di errore

<table><thead><tr><th width="200">FLUSSO</th><th>CHE COSA VA LÌ</th></tr></thead><tbody><tr><td><strong>Output standard</strong></td><td>La busta, in JSON o YAML, per i successi e gli errori. In testo, il risultato. In testo, gli errori di <code>devo login</code> e dei comandi disponibili solo su Devolutions Cloud o solo su Devolutions Server vanno anch’essi qui, come <code>&#x3C;code>: &#x3C;message></code>.</td></tr><tr><td><strong>Output di errore</strong></td><td>In testo, la maggior parte degli errori, come <code>&#x3C;code>: &#x3C;message></code>. Avvisi su ciò che Devolutions CLI sta facendo, come <code>Starting Devolutions CLI daemon...</code>, e le richieste e i messaggi dell’accesso interattivo.</td></tr></tbody></table>

Quindi, in JSON o YAML, legga solo l’output standard: contiene esattamente una busta. L’eccezione è `devo secret run`, descritta più sotto.

## Silenzioso o dettagliato

Gli avvisi su ciò che Devolutions CLI sta facendo, come l’avvio del processo in background, vengono scritti sull’errore standard:

* Nell’output di testo compaiono per impostazione predefinita. `--quiet` li nasconde.
* Nell’output JSON o YAML sono nascoste per impostazione predefinita. `--verbose` le mostra, sempre sull’errore standard.

`--quiet` e `--verbose` insieme arrestano il comando con `conflictingOptions`.

## Buono a sapersi

* `devo secret run` non avvolge l’output del programma che avvia: l’output del programma va al terminale man mano che il programma lo scrive, con i valori segreti mascherati. Il modo in cui tornano i propri errori dipende da quando si verificano:
  * Un avvio che Devolutions CLI rifiuta prima di risolvere qualsiasi cosa, come un riferimento negli argomenti del comando (`secretLaunchArgumentReference`), un `--check` non riuscito o un programma che non può avviarsi, restituisce la busta sull’output standard con `--json` o `--yaml`.
  * Un riferimento che non si risolve viene sempre scritto sull’errore standard come `<code>: <message>`, anche con `--json`, e il programma non si avvia.
  * Un programma arrestato da `--timeout-seconds` esce con `124`; un’esecuzione interrotta esce con `130`.
  * Altrimenti, `devo secret run` restituisce il codice di uscita del programma stesso. Consulti [Codici di uscita ed errori](/cli/it/riferimento/exit-codes-and-errors.md).
* Ogni comando e le sue opzioni si trovano in [Comandi](/cli/it/riferimento/commands.md).

## Successivo

* [Run without prompts](/cli/it/per-devops-e-amministratori/automate/non-interactive.md)
* [Exit codes and errors](/cli/it/riferimento/exit-codes-and-errors.md)
* [Global options](/cli/it/riferimento/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/it/per-devops-e-amministratori/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.
