Output Format - User Guide¶
The Fabric CLI provides flexible output formatting options to support both human-readable and machine-parseable results. This guide covers how to configure and use output formats effectively.
Overview¶
The output format feature allows you to control how command results are displayed. The CLI supports two primary output formats: - Text Format (default): Human-readable, formatted output optimized for terminal viewing - JSON Format: Structured, machine-parseable output suitable for scripting and automation
Supported Output Formats¶
Text Format (text)¶
The default format that provides human-readable output with:
- Clean, formatted display
- Headers for tabular data when using -l or -q flags
- Color-coded status indicators
- Progress indicators and informational messages
- Unix-style listings for directory-like commands
JSON Format (json)¶
Structured output format that provides: - Consistent JSON schema across all commands - Machine-parseable results - Standardized error reporting - Timestamp and command metadata
Configuration¶
Command-Line Flag¶
Override the output format for any command using the global --output_format flag:
# Use JSON format for a single command
fab ls --output_format json
# Use text format explicitly
fab auth status --output_format text
Available Values:
- json - JSON structured output
- text - Human-readable text output (default)
Configuration File¶
Set the default output format using the fab config set command:
# Set JSON as default format
fab config set output_format json
# Set text as default format (default)
fab config set output_format text
# View current setting
fab config get output_format
The configuration is stored in your Fabric CLI configuration file and applies to all subsequent commands unless overridden by the --output_format flag.
JSON Output Schema¶
Success Response Structure¶
{
"timestamp": "2026-01-06T08:00:00.000Z",
"status": "Success",
"command": "command_name",
"result": {
"data": [
{
"id": "example-id",
"name": "example-name",
"type": "example-type"
}
],
"hidden_data": [
".capacities",
".gateways"
],
"message": "Operation completed successfully"
}
}
Error Response Structure¶
{
"timestamp": "2026-01-06T08:00:00.000Z",
"status": "Failure",
"command": "command_name",
"result": {
"message": "Unable to find workspace: workspace1",
"error_code": "ERROR_WORKSPACE_NOT_FOUND"
}
}
JSON Schema Fields¶
Root Level¶
timestamp(string): ISO 8601 UTC timestamp when the command completedstatus(string): Either"Success"or"Failure"command(string, optional): The primary command that was executedresult(object): Contains the actual command results
Result Object¶
data(array, optional): Primary output data when availablehidden_data(array, optional): Virtual workspace items like capacities, gateways, managed private endpoints etc...message(string, optional): Success message or operation descriptionerror_code(string, optional): Standardized error code (only present on failures)
Text Output Behavior¶
Success Output¶
Text format provides context-aware formatting:
# Basic directory listing (names only)
$ fab ls
workspace1
workspace2
# Directory listing with details (-l flag)
$ fab ls -l
name id capacityName capacityId capacityRegion
---------------------------------------------------------------------------------------------------------------------
workspace1 12345678-1234-1234-1234-123456789012 MyCapacity 87654321-4321-4321-4321-210987654321 East US
workspace2 12345678-1234-1234-1234-123456789013 MyCapacity 87654321-4321-4321-4321-210987654321 East US
# Simple success message
$ fab auth logout
* Logged out of Fabric account
# Data with message (mkdir shows table by default)
$ fab mkdir workspace1
* 'workspace1' created
Error Output¶
Error messages include the error code in brackets followed by the message:
$ fab ls invalid-workspace
x ls: [NotFound] The Workspace 'invalid-workspace.Workspace' could not be found
Informational Output¶
Informational messages (warnings, progress, debug info) are always sent to stderr regardless of output format:
$ fab mv ws1.Workspace/r1.Report ws1.Workspace/
Moving '/ws.Workspace/r1.Report' → '/ws1.Workspace/r1.Report'...
* Move completed
Stream Behavior¶
Standard Output (stdout)¶
- All command results (both success and error responses)
- JSON format: All JSON responses
- Text format: Command results, data, and final status messages
Standard Error (stderr)¶
- Warning messages
- Informational messages
- Debug messages
- Progress indicators
This separation allows you to: - Redirect command results to files while preserving interactive feedback - Filter informational messages separately from actual data - Pipe JSON output to processing tools without interference
Usage Examples¶
Basic Usage¶
# List workspaces in text format (names only)
$ fab ls
workspace1
workspace2
# Same command with JSON output
$ fab ls --output_format json
{
"timestamp": "2026-01-06T08:00:00.000Z",
"status": "Success",
"command": "ls",
"result": {
"data": [
{
"name": "workspace1"
},
{
"name": "workspace2"
}
]
}
}
Configuration Examples¶
# Check current output format
$ fab config get output_format
text
# Change to JSON as default
$ fab config set output_format json
* Configuration 'output_format' set to 'json'
# All subsequent commands use JSON
$ fab auth status
{
"timestamp": "2026-01-06T08:00:00.000Z",
"status": "Success",
"command": "auth",
"result": {
"data": [
{
"logged_in": "true",
"account": "user@example.com",
"tenant_id": "12345678-1234-1234-1234-123456789012"
}
]
}
}
# Override for single command
$ fab auth status --output_format text
Logged In: true
Account: user@example.com
Tenant ID: 12345678-1234-1234-1234-123456789012
Automation and Scripting Examples¶
Redirecting Output¶
# Save results to file while seeing progress
$ fab ls --output_format json > workspaces.json
Processing workspace list...
# Save only errors for logging
$ fab command 2> error.log
Best Practices¶
Interactive Use¶
- Keep the default
textformat for better readability - Use
-lflag with text format to see detailed information in tables - Progress and status messages will appear regardless of output format
Automation and Scripting¶
- Set
output_format jsonin config for scripts and automation - Use
--output_format jsonfor specific commands that need machine parsing - Always check the
statusfield in JSON responses for error handling
Command-Specific Tips¶
- Use
--output_format textoverride when you need human-readable output from a JSON-configured CLI - Combine with other flags like
--allto include hidden data in JSON output - Use shell redirection to separate data output from informational messages
Related Documentation¶
- Configuration Management - Managing CLI settings and preferences
- Parameters - Global flags and command parameters
- Exit Codes - Understanding command exit codes
- Configuration Examples - Practical configuration examples