<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reference on Restish</title><link>https://rest.sh/docs/reference/</link><description>Recent content in Reference on Restish</description><generator>Hugo</generator><language>en-US</language><atom:link href="https://rest.sh/docs/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>Commands</title><link>https://rest.sh/docs/reference/commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/commands/</guid><description>&lt;p&gt;Restish commands fall into a few groups: generic HTTP requests, API management,
configuration and setup, utilities, generated API commands, and plugin
commands. Run any command with &lt;code&gt;--help&lt;/code&gt; for exact flags and operational notes.&lt;/p&gt;
&lt;h2 id="generic-http-commands"&gt;Generic HTTP Commands&lt;/h2&gt;
&lt;p&gt;Use generic HTTP commands for one-off requests or APIs without a useful
OpenAPI description.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish get api.rest.sh/get
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish post api.rest.sh/post &lt;span class="s1"&gt;&amp;#39;name: Alice&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish patch api.rest.sh/patch &lt;span class="s1"&gt;&amp;#39;enabled: false&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A bare URL without a body sends &lt;code&gt;GET&lt;/code&gt;. A bare URL with shorthand or stdin body
input sends &lt;code&gt;POST&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Generic HTTP Commands</title><link>https://rest.sh/docs/reference/http-commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/http-commands/</guid><description>&lt;p&gt;Generic HTTP commands work without API registration. They still use Restish
profiles, auth, TLS, retries, cache, filtering, pagination, and output.&lt;/p&gt;
&lt;h2 id="generated-command-reference"&gt;Generated Command Reference&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen http-commands --&gt;
&lt;p&gt;Generated from the current Cobra command tree.&lt;/p&gt;
&lt;h3 id="restish-get"&gt;&lt;code&gt;restish get&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Perform an HTTP GET request&lt;/p&gt;
&lt;p&gt;Perform an HTTP &lt;code&gt;GET&lt;/code&gt; request against a full URL or registered API short-name URL.&lt;/p&gt;
&lt;p&gt;Use generic HTTP commands for one-off requests, scripting, and APIs that are not registered with &lt;code&gt;api connect&lt;/code&gt;. Restish still applies global request flags, profile settings for registered API short names, response normalization, output formatting, filtering, retries, caching, pagination, and plugin hooks.&lt;/p&gt;</description></item><item><title>Global Flags</title><link>https://rest.sh/docs/reference/global-flags/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/global-flags/</guid><description>&lt;p&gt;Global flags apply across generic requests, generated API commands, utilities,
and many plugin-delegated requests. Ordinary command help shows common flags;
&lt;code&gt;--help-all&lt;/code&gt; shows the full grouped reference:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish get --help
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish get --help-all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="generated-flag-reference"&gt;Generated Flag Reference&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen global-flags --&gt;
&lt;p&gt;Generated from the current root persistent flags.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;--help-all&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Type: &lt;code&gt;bool&lt;/code&gt;; default: &lt;code&gt;false&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Show all inherited Restish flags in help&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;--rsh-auth&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Type: &lt;code&gt;string&lt;/code&gt;; default: none&lt;/p&gt;
&lt;p&gt;Generated operation auth override, e.g. &amp;ldquo;PartnerKey&amp;rdquo; or &amp;ldquo;UserOAuth+PartnerKey&amp;rdquo;&lt;/p&gt;</description></item><item><title>API Management</title><link>https://rest.sh/docs/reference/api-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/api-management/</guid><description>&lt;p&gt;&lt;code&gt;restish api&lt;/code&gt; manages configured APIs and generated command sources.&lt;/p&gt;
&lt;h2 id="generated-command-reference"&gt;Generated Command Reference&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen api-command --&gt;
&lt;p&gt;Generated from the current Cobra command tree.&lt;/p&gt;
&lt;h3 id="restish-api"&gt;&lt;code&gt;restish api&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Manage registered API configurations&lt;/p&gt;
&lt;p&gt;Manage APIs registered in the local Restish config.&lt;/p&gt;
&lt;p&gt;Registered APIs turn OpenAPI descriptions into generated commands with shell completion, persistent profiles, and auth-aware requests. Use &lt;code&gt;api connect&lt;/code&gt; to add an API, &lt;code&gt;api sync&lt;/code&gt; after its OpenAPI document changes, and &lt;code&gt;api set&lt;/code&gt; for local profile edits.&lt;/p&gt;</description></item><item><title>Config Command</title><link>https://rest.sh/docs/reference/config-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/config-command/</guid><description>&lt;p&gt;Use &lt;code&gt;restish config&lt;/code&gt; when you need to inspect or change local Restish state:
registered APIs, profiles, auth settings, cache preferences, plugin config,
and terminal themes.&lt;/p&gt;
&lt;p&gt;For field-level config structure and precedence, see &lt;a href="../config/"&gt;Config&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="common-examples"&gt;Common Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config path
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config show
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config show -o json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config trust
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;cache.max_size: 500MB&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config theme list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config theme &lt;span class="nb"&gt;set&lt;/span&gt; one-dark-pro
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish config theme reset
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;code&gt;api set&lt;/code&gt; for edits that belong to one registered API. Use &lt;code&gt;config set&lt;/code&gt;
when the patch targets top-level config, shared auth profiles, cache settings,
plugin settings, or themes.&lt;/p&gt;</description></item><item><title>Cache Command</title><link>https://rest.sh/docs/reference/cache-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/cache-command/</guid><description>&lt;p&gt;Use &lt;code&gt;restish cache&lt;/code&gt; to inspect or clear cached HTTP responses. This cache is
separate from the OpenAPI spec cache and OAuth/auth token cache.&lt;/p&gt;
&lt;h2 id="common-examples"&gt;Common Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cache info
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cache info -o json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cache clear
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cache clear example
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cache clear --direct
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;code&gt;api sync&lt;/code&gt; when you need to refresh a cached OpenAPI document. Use
&lt;code&gt;api auth logout&lt;/code&gt; when you need to clear cached auth tokens.&lt;/p&gt;
&lt;p&gt;Config and cache roots are separate. &lt;code&gt;RSH_CONFIG_DIR&lt;/code&gt; changes which config file
Restish reads, but it does not by itself isolate the HTTP/spec cache; set
&lt;code&gt;RSH_CACHE_DIR&lt;/code&gt; as well when tests, bug reports, or audits need a clean cache.&lt;/p&gt;</description></item><item><title>Example API</title><link>https://rest.sh/docs/reference/example-api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/example-api/</guid><description>&lt;p&gt;The docs use &lt;code&gt;api.rest.sh&lt;/code&gt; whenever a live endpoint makes a Restish workflow
clearer. Restish infers &lt;code&gt;https://&lt;/code&gt; for host-like request targets, while config
values and OpenAPI metadata still use full URLs. The API is intentionally broad:
it has OpenAPI discovery, request echoing, auth fixtures, forms, uploads,
streaming, pagination, retries, content negotiation, binary responses,
redirects, and safe CRUD examples.&lt;/p&gt;
&lt;p&gt;Configure it once when you want short API-aware commands:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api connect example api.rest.sh &lt;span class="s1"&gt;&amp;#39;prompt.api_key: docs-key&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish example --help
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use a host-like URL when you want to stay in generic HTTP mode:&lt;/p&gt;</description></item><item><title>Doctor Command</title><link>https://rest.sh/docs/reference/doctor-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/doctor-command/</guid><description>&lt;p&gt;Use &lt;code&gt;restish doctor&lt;/code&gt; when behavior looks environment-specific: the wrong config
file is being read, permissions are suspicious, shell setup is incomplete,
plugins are missing, or a registered API needs a health check.&lt;/p&gt;
&lt;h2 id="common-examples"&gt;Common Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor -o json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor api example
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor api example --check-network
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor plugin mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Prefer JSON output when attaching diagnostics to an issue or comparing results
across machines.&lt;/p&gt;
&lt;p&gt;TTY human output colorizes status words when terminal color is enabled. JSON
output is stable and uncolored.&lt;/p&gt;</description></item><item><title>OpenAPI Extensions and Generated Commands</title><link>https://rest.sh/docs/reference/openapi-cli-integration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/openapi-cli-integration/</guid><description>&lt;p&gt;Restish turns OpenAPI operations into CLI commands. This reference is for API
authors and maintainers who want the generated command surface to feel natural:
stable names, useful help, predictable parameters, auth setup, and documented
Restish extensions.&lt;/p&gt;
&lt;h2 id="minimum-good-operation"&gt;Minimum Good Operation&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;paths&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;/items/{item-id}:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;get&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;operationId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;getItem&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;summary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Get one item&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;item-id&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;in&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;path&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;required&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;string&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;responses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;200&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;Item&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This can become:&lt;/p&gt;</description></item><item><title>Shell Command</title><link>https://rest.sh/docs/reference/shell-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/shell-command/</guid><description>&lt;p&gt;Use &lt;code&gt;restish shell&lt;/code&gt; to configure interactive shell behavior and generate or
install completion scripts. Shell setup prevents URL, query, filter, and
shorthand characters from being rewritten before Restish sees them.&lt;/p&gt;
&lt;p&gt;For the workflow explanation, see &lt;a href="https://rest.sh/docs/getting-started/shell-setup/"&gt;Shell Setup&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="common-examples"&gt;Common Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish shell setup zsh --dry-run
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish shell setup zsh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish shell setup zsh --no-completion
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish shell completion zsh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish shell completion bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish shell completion install fish
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Quote URLs, filters, and shorthand in scripts even after shell setup. The
wrapper is for day-to-day interactive use.&lt;/p&gt;</description></item><item><title>Utility Commands</title><link>https://rest.sh/docs/reference/utility-commands/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/utility-commands/</guid><description>&lt;p&gt;Utility commands inspect supporting HTTP and runtime details without changing
remote resources. Use them to check TLS certificates, extract hypermedia links,
and report the Restish version.&lt;/p&gt;
&lt;h2 id="common-examples"&gt;Common Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cert api.rest.sh
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish cert api.rest.sh --warn-days &lt;span class="m"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish links api.rest.sh/images next
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish version
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="generated-command-reference"&gt;Generated Command Reference&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen utility-commands --&gt;
&lt;p&gt;Generated from the current Cobra command tree.&lt;/p&gt;
&lt;h3 id="restish-cert"&gt;&lt;code&gt;restish cert&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Show the TLS certificate chain for a server&lt;/p&gt;
&lt;p&gt;Show the TLS certificate chain for an HTTPS server.&lt;/p&gt;</description></item><item><title>Config</title><link>https://rest.sh/docs/reference/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/config/</guid><description>&lt;p&gt;Restish config is the trust boundary for API base URLs, generated command
sources, profiles, auth, TLS, plugins, cache settings, and terminal-output
themes.&lt;/p&gt;
&lt;h2 id="location-and-selection"&gt;Location And Selection&lt;/h2&gt;
&lt;p&gt;Default config lives in a Restish config directory as &lt;code&gt;restish.json&lt;/code&gt;:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Platform&lt;/th&gt;
 &lt;th&gt;Default path&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS, Linux, and other Unix-like systems&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~/.config/restish/restish.json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Windows&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;%APPDATA%\restish\restish.json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Config path precedence:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;--rsh-config &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RSH_CONFIG=&amp;lt;file&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RSH_CONFIG_DIR=&amp;lt;dir&amp;gt;/restish.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;XDG_CONFIG_HOME/restish/restish.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;platform default&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish --rsh-config ./restish.json api list
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;RSH_CONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./restish.json restish api list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;An explicit config file is the whole source of truth for that invocation. If it
is missing, Restish errors instead of falling back to user config.&lt;/p&gt;</description></item><item><title>Profiles</title><link>https://rest.sh/docs/reference/profiles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/profiles/</guid><description>&lt;p&gt;Profiles are named request defaults. Most profiles live under an API entry and
let the same command run against different environments, auth contexts, headers,
query params, or TLS settings.&lt;/p&gt;
&lt;h2 id="example"&gt;Example&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-jsonc" data-lang="jsonc"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;apis&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;example&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;base_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://api.rest.sh&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;profiles&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;headers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Accept: application/json&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;debug&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;query&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;trace=docs&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;headers&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;X-Debug: true&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;auth&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;bearer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;params&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;env:DOCS_TOKEN&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use a profile with &lt;code&gt;-p&lt;/code&gt; or &lt;code&gt;RSH_PROFILE&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish -p json example list-images
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;RSH_PROFILE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;json restish example list-images
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The command-line flag wins over &lt;code&gt;RSH_PROFILE&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Environment Variables</title><link>https://rest.sh/docs/reference/environment-variables/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/environment-variables/</guid><description>&lt;p&gt;Environment variables are useful for local defaults and automation, but command
line flags should be used when one invocation must be explicit.&lt;/p&gt;
&lt;!-- BEGIN GENERATED: restish-docgen environment-variables --&gt;
&lt;p&gt;Generated from production source environment-variable usage plus Go&amp;rsquo;s standard proxy environment contract.&lt;/p&gt;
&lt;h3 id="config-and-profiles"&gt;Config And Profiles&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_CONFIG&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Explicit config file path. It selects one config file for the invocation.&lt;/td&gt;
 &lt;td&gt;config paths&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_CONFIG_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Config directory override; Restish uses &lt;code&gt;restish.json&lt;/code&gt; inside this directory.&lt;/td&gt;
 &lt;td&gt;config paths&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_CACHE_DIR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTP/spec cache directory override.&lt;/td&gt;
 &lt;td&gt;config paths&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;XDG_CONFIG_HOME&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base config directory; Restish uses &lt;code&gt;$XDG_CONFIG_HOME/restish/restish.json&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;config paths&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;XDG_CACHE_HOME&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Base cache directory; Restish uses &lt;code&gt;$XDG_CACHE_HOME/restish&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;config paths&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_PROFILE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default API profile name. The &lt;code&gt;--rsh-profile&lt;/code&gt; flag wins for one command.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_AUTH&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default generated-operation auth override, such as &lt;code&gt;PartnerKey&lt;/code&gt; or &lt;code&gt;UserOAuth+PartnerKey&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="request-defaults"&gt;Request Defaults&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_HEADER&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Comma-separated default request headers in &lt;code&gt;Name: Value&lt;/code&gt; form; escape literal commas as &lt;code&gt;\,&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_QUERY&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Comma-separated default query parameters in &lt;code&gt;key=value&lt;/code&gt; form; escape literal commas as &lt;code&gt;\,&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_TIMEOUT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default request timeout such as &lt;code&gt;15s&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_FILTER&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default response filter expression.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_NO_CACHE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bypass HTTP cache where supported.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_INSECURE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable TLS certificate verification when truthy.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_RETRY&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default retry count where supported.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_RETRY_UNSAFE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Allow retry replay for POST, PUT, PATCH, and DELETE when truthy.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_RETRY_MAX_WAIT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default cap for &lt;code&gt;Retry-After&lt;/code&gt; / &lt;code&gt;X-Retry-In&lt;/code&gt;, such as &lt;code&gt;30s&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="editor-and-terminal"&gt;Editor And Terminal&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_OUTPUT_FORMAT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default rendered body format for &lt;code&gt;-o&lt;/code&gt; / &lt;code&gt;--rsh-output-format&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_PRINT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default &lt;code&gt;--rsh-print&lt;/code&gt; output parts, such as &lt;code&gt;b&lt;/code&gt; for compact rendered output in scripts.&lt;/td&gt;
 &lt;td&gt;global flags&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;VISUAL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Preferred editor for &lt;code&gt;config edit&lt;/code&gt; and &lt;code&gt;edit&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;editor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;EDITOR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fallback editor for &lt;code&gt;config edit&lt;/code&gt; and &lt;code&gt;edit&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;editor&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;GLAMOUR_STYLE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Markdown rendering style for markdown-formatted terminal output.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_IMAGE_PROTOCOL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Force terminal image rendering protocol: &lt;code&gt;kitty&lt;/code&gt;, &lt;code&gt;iterm2&lt;/code&gt;, or &lt;code&gt;halfblock&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;KITTY_WINDOW_ID&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Used to auto-detect Kitty image support.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TERM&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Used to auto-detect Kitty terminal support.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;TERM_PROGRAM&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Used to auto-detect iTerm2-style image support.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;COLUMNS&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Terminal width hint for half-block image rendering.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;SHELL&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Used for first-run shell setup hints.&lt;/td&gt;
 &lt;td&gt;shell setup&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;NO_COLOR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable color where respected.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;NOCOLOR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Disable color; supported as an older spelling alongside &lt;code&gt;NO_COLOR&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;COLOR&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Force color where respected.&lt;/td&gt;
 &lt;td&gt;output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="plugin-runtime"&gt;Plugin Runtime&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_COMMAND_PLUGIN_DISCOVERY_TIMEOUT&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Override command-plugin startup discovery timeout.&lt;/td&gt;
 &lt;td&gt;plugin runtime&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;RSH_COMMAND_PLUGIN_SHUTDOWN_GRACE&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Override command-plugin shutdown grace period.&lt;/td&gt;
 &lt;td&gt;plugin runtime&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="plugin-installation"&gt;Plugin Installation&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;GITHUB_TOKEN&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Bearer token used for GitHub release API requests during &lt;code&gt;restish plugin install owner/repo plugin&lt;/code&gt;.&lt;/td&gt;
 &lt;td&gt;plugin install&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="proxies"&gt;Proxies&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Variable&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;HTTPS_PROXY&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Standard Go HTTPS proxy setting used by Restish HTTP transports.&lt;/td&gt;
 &lt;td&gt;Go HTTP transport&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;HTTP_PROXY&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Standard Go HTTP proxy setting used by Restish HTTP transports.&lt;/td&gt;
 &lt;td&gt;Go HTTP transport&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;NO_PROXY&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Standard Go proxy bypass list used by Restish HTTP transports.&lt;/td&gt;
 &lt;td&gt;Go HTTP transport&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;!-- END GENERATED --&gt;
&lt;p&gt;Flags override environment defaults for one command. Restish also uses Go&amp;rsquo;s
standard proxy environment behavior:&lt;/p&gt;</description></item><item><title>Auth</title><link>https://rest.sh/docs/reference/auth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/auth/</guid><description>&lt;p&gt;Auth configuration lives on a profile. Use &lt;code&gt;auth&lt;/code&gt; when one credential applies
to the API/profile, and use &lt;code&gt;credentials&lt;/code&gt; when generated OpenAPI operations
need different security schemes or alternatives.&lt;/p&gt;
&lt;h2 id="auth-types"&gt;Auth Types&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Type&lt;/th&gt;
 &lt;th&gt;Required params&lt;/th&gt;
 &lt;th&gt;Optional params&lt;/th&gt;
 &lt;th&gt;Effect&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;bearer&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;token&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Sets &lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;http-basic&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;username&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;password&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Sets HTTP Basic auth. If &lt;code&gt;password&lt;/code&gt; is omitted and prompting is available, Restish prompts.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;api-key&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;in&lt;/code&gt;, &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;value&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;Sends an API key in a &lt;code&gt;header&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, or &lt;code&gt;cookie&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;oauth-client-credentials&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client_id&lt;/code&gt;, &lt;code&gt;client_secret&lt;/code&gt;, plus &lt;code&gt;token_url&lt;/code&gt; or &lt;code&gt;issuer_url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;auth_method&lt;/code&gt;, &lt;code&gt;scopes&lt;/code&gt;, provider-specific token params such as &lt;code&gt;audience&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Fetches and caches a bearer token with the OAuth client credentials flow.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;oauth-authorization-code&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client_id&lt;/code&gt;, plus &lt;code&gt;authorize_url&lt;/code&gt; and &lt;code&gt;token_url&lt;/code&gt;, or &lt;code&gt;issuer_url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client_secret&lt;/code&gt;, &lt;code&gt;auth_method&lt;/code&gt;, &lt;code&gt;scopes&lt;/code&gt;, &lt;code&gt;redirect_scheme&lt;/code&gt;, &lt;code&gt;redirect_port&lt;/code&gt;, &lt;code&gt;redirect_path&lt;/code&gt;, &lt;code&gt;redirect_cert&lt;/code&gt;, &lt;code&gt;redirect_key&lt;/code&gt;, &lt;code&gt;callback_success_html&lt;/code&gt;, &lt;code&gt;callback_error_html&lt;/code&gt;, provider-specific token params&lt;/td&gt;
 &lt;td&gt;Runs an OAuth authorization-code flow with PKCE and caches the token.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;oauth-device-code&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client_id&lt;/code&gt;, plus &lt;code&gt;device_authorization_url&lt;/code&gt; and &lt;code&gt;token_url&lt;/code&gt;, or &lt;code&gt;issuer_url&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;client_secret&lt;/code&gt;, &lt;code&gt;auth_method&lt;/code&gt;, &lt;code&gt;scopes&lt;/code&gt;, provider-specific token params&lt;/td&gt;
 &lt;td&gt;Runs the OAuth device-code flow and caches the token.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;external-tool&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;commandline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;omitbody&lt;/code&gt;, &lt;code&gt;output&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Runs a local helper that can mutate request headers or URI.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OAuth &lt;code&gt;auth_method&lt;/code&gt; accepts &lt;code&gt;client_secret_post&lt;/code&gt; by default or
&lt;code&gt;client_secret_basic&lt;/code&gt;. OAuth endpoints must use HTTPS except for localhost or
loopback development URLs. &lt;code&gt;issuer_url&lt;/code&gt; uses OIDC discovery when direct
endpoint URLs are absent. Unknown non-reserved OAuth params are forwarded to
token requests, which is how provider-specific values such as &lt;code&gt;audience&lt;/code&gt; are
sent.&lt;/p&gt;</description></item><item><title>Content Types</title><link>https://rest.sh/docs/reference/content-types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/content-types/</guid><description>&lt;p&gt;Restish separates two decisions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Request encoding: &lt;code&gt;-c&lt;/code&gt; or &lt;code&gt;--rsh-content-type&lt;/code&gt; controls how a request body is sent.&lt;/li&gt;
&lt;li&gt;Response rendering: &lt;code&gt;-o&lt;/code&gt; controls how a decoded response is printed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;HTTP &lt;code&gt;Accept&lt;/code&gt; headers ask the server for a representation. Output formats do
not change what the server sends.&lt;/p&gt;
&lt;h2 id="built-in-types"&gt;Built-In Types&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;restish doctor&lt;/code&gt; lists the registered content type aliases. Use JSON doctor
output when you need MIME types, suffixes, and quality values:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish doctor -o json
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Alias&lt;/th&gt;
 &lt;th&gt;MIME types&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ndjson&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/x-ndjson&lt;/code&gt;, &lt;code&gt;application/ndjson&lt;/code&gt;, &lt;code&gt;application/jsonl&lt;/code&gt;, &lt;code&gt;application/jsonlines&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;xml&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/xml&lt;/code&gt;, &lt;code&gt;text/xml&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;yaml&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/yaml&lt;/code&gt;, &lt;code&gt;application/x-yaml&lt;/code&gt;, &lt;code&gt;text/yaml&lt;/code&gt;, &lt;code&gt;text/x-yaml&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cbor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/cbor&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;msgpack&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/msgpack&lt;/code&gt;, &lt;code&gt;application/x-msgpack&lt;/code&gt;, &lt;code&gt;application/vnd.msgpack&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;binary&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/octet-stream&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;ion&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/ion&lt;/code&gt;, &lt;code&gt;text/ion&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;form&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;application/x-www-form-urlencoded&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;multipart&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;multipart/form-data&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;sse&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text/event-stream&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;text&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;text/plain&lt;/code&gt;, &lt;code&gt;text/*&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;JSON-family structured types with &lt;code&gt;+json&lt;/code&gt;, such as
&lt;code&gt;application/problem+json&lt;/code&gt;, decode as JSON. Structured suffixes win before broad
wildcards, so a response labeled &lt;code&gt;text/example+json&lt;/code&gt; is treated as JSON rather
than plain &lt;code&gt;text/*&lt;/code&gt; unless an exact handler is registered for that MIME type.
XML-family media types with &lt;code&gt;+xml&lt;/code&gt;, such as &lt;code&gt;application/soap+xml&lt;/code&gt;, use the XML
handler.&lt;/p&gt;</description></item><item><title>Output Formats</title><link>https://rest.sh/docs/reference/output-formats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/output-formats/</guid><description>&lt;p&gt;Output formats decide how the selected body/value is rendered after decoding,
pagination or streaming, and filtering. They do not print HTTP status or
headers; use &lt;code&gt;--rsh-print&lt;/code&gt; for those exchange parts. They also do not change
request &lt;code&gt;Accept&lt;/code&gt; headers or server-side content negotiation. Redirected
rendered document output is pretty by default; pass &lt;code&gt;--rsh-print=b&lt;/code&gt; for compact
rendered JSON.&lt;/p&gt;
&lt;h2 id="document-formats"&gt;Document Formats&lt;/h2&gt;
&lt;p&gt;Document formats produce one coherent result:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Format&lt;/th&gt;
 &lt;th&gt;Use&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Default body/value presentation.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One JSON document.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;yaml&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One YAML document.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;cbor&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;One CBOR document.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;gron&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Greppable path/value assignments.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;table&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Terminal table output for records or object collections.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;image&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Terminal image rendering for image responses.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images -o auto
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images --rsh-collect -o json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/example -o gron
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images/png
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For redirects, unfiltered responses already write body bytes:&lt;/p&gt;</description></item><item><title>Output Defaults</title><link>https://rest.sh/docs/reference/output-defaults/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/output-defaults/</guid><description>&lt;p&gt;Restish chooses output defaults from context. Scripts should still pass &lt;code&gt;-o&lt;/code&gt;
when the expected shape matters.&lt;/p&gt;
&lt;h2 id="main-rule"&gt;Main Rule&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Context&lt;/th&gt;
 &lt;th&gt;Default&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Interactive terminal, unfiltered response&lt;/td&gt;
 &lt;td&gt;response status, headers, and formatted body on stdout&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Redirected stdout, unfiltered response with no explicit output transform&lt;/td&gt;
 &lt;td&gt;response body bytes&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Explicit filter selecting a scalar&lt;/td&gt;
 &lt;td&gt;plain scalar text&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Explicit filter selecting structured data&lt;/td&gt;
 &lt;td&gt;pretty JSON-shaped auto output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Paginated items with no collect mode&lt;/td&gt;
 &lt;td&gt;stream item results as they arrive&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Live streams&lt;/td&gt;
 &lt;td&gt;record-oriented output; use &lt;code&gt;ndjson&lt;/code&gt; or &lt;code&gt;lines&lt;/code&gt; for scripts; plain &lt;code&gt;-o json&lt;/code&gt; requires &lt;code&gt;--rsh-collect&lt;/code&gt; and finite &lt;code&gt;--rsh-max-items&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images -o json &amp;gt; images.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images/jpeg &amp;gt; dragonfly.jpg
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/formats/cbor &amp;gt; response.cbor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/formats/cbor -o json &amp;gt; response.json
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/events --rsh-max-items &lt;span class="m"&gt;3&lt;/span&gt; -o ndjson
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Use &lt;code&gt;--rsh-print=b&lt;/code&gt; when a script wants compact rendered JSON instead of the
pretty default for transformed output:&lt;/p&gt;</description></item><item><title>Shorthand</title><link>https://rest.sh/docs/reference/shorthand/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/shorthand/</guid><description>&lt;p&gt;Shorthand is Restish&amp;rsquo;s compact structured-input language. It builds JSON-shaped
values for request bodies, patches structured stdin, and powers &lt;code&gt;config set&lt;/code&gt;,
&lt;code&gt;api set&lt;/code&gt;, and &lt;code&gt;edit&lt;/code&gt; patch arguments.&lt;/p&gt;
&lt;h2 id="quick-shape"&gt;Quick Shape&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Shorthand&lt;/th&gt;
 &lt;th&gt;Result&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;name: Alice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;user.name: Alice&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{&amp;quot;user&amp;quot;:{&amp;quot;name&amp;quot;:&amp;quot;Alice&amp;quot;}}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;tags[]: docs&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{&amp;quot;tags&amp;quot;:[&amp;quot;docs&amp;quot;]}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;items[0].name: first&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{&amp;quot;items&amp;quot;:[{&amp;quot;name&amp;quot;:&amp;quot;first&amp;quot;}]}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;base{one: 1, two.three: 3}&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{&amp;quot;base&amp;quot;:{&amp;quot;one&amp;quot;:1,&amp;quot;two&amp;quot;:{&amp;quot;three&amp;quot;:3}}}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Use quotes around an entire shorthand argument when it contains spaces,
brackets, &lt;code&gt;?&lt;/code&gt;, &lt;code&gt;&amp;amp;&lt;/code&gt;, &lt;code&gt;|&lt;/code&gt;, or other shell-sensitive characters:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish post api.rest.sh/post &lt;span class="s1"&gt;&amp;#39;user.name: Alice, tags[]: docs&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="assignments"&gt;Assignments&lt;/h2&gt;
&lt;p&gt;An assignment is &lt;code&gt;path: value&lt;/code&gt;. Paths use dots for nested object fields and
brackets for array positions.&lt;/p&gt;</description></item><item><title>Query Syntax</title><link>https://rest.sh/docs/reference/query-syntax/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/query-syntax/</guid><description>&lt;p&gt;Restish filters the normalized response before formatting. Use shorthand for
direct paths, projections, recursive search, and simple selection. Use jq for
larger transforms.&lt;/p&gt;
&lt;h2 id="roots"&gt;Roots&lt;/h2&gt;
&lt;p&gt;Most filters start from one of these normalized roots:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Root&lt;/th&gt;
 &lt;th&gt;Meaning&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;status&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Numeric HTTP status code.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;headers&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;First value for each response header.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;headers_all&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Complete header map for repeated values. Use jq syntax such as &lt;code&gt;.headers_all[&amp;quot;Set-Cookie&amp;quot;]&lt;/code&gt; when you need it.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;links&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Normalized hypermedia links.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;body&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Decoded response body.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;proto&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;HTTP protocol string such as &lt;code&gt;HTTP/2.0&lt;/code&gt;.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/ -f headers.Content-Type
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/images -f links.next
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish api.rest.sh/example -f body.basics.profiles
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="paths-and-indexes"&gt;Paths And Indexes&lt;/h2&gt;
&lt;p&gt;Use dots for object fields and brackets for array positions:&lt;/p&gt;</description></item><item><title>Bulk Command</title><link>https://rest.sh/docs/reference/bulk-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/bulk-command/</guid><description>&lt;p&gt;&lt;code&gt;restish-bulk&lt;/code&gt; is a command plugin for workflows where a collection needs to be
pulled down, edited locally, and pushed back in a controlled way. It is useful
for repeatable content or data maintenance tasks where one request at a time is
too slow or too error-prone.&lt;/p&gt;
&lt;h2 id="examples"&gt;Examples&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish bulk init api.rest.sh/books
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish bulk status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish bulk pull
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish bulk diff
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish bulk push
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;restish bulk reset
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;init&lt;/code&gt; starts a bulk workspace for a collection. &lt;code&gt;status&lt;/code&gt; shows local and remote
state. &lt;code&gt;pull&lt;/code&gt; refreshes local data. &lt;code&gt;diff&lt;/code&gt; previews local edits. &lt;code&gt;push&lt;/code&gt; sends
local changes only when it has a safe precondition such as an ETag,
Last-Modified value, or matching local/remote version metadata. &lt;code&gt;reset&lt;/code&gt; returns
the workspace to a clean state.&lt;/p&gt;</description></item><item><title>Edit Command</title><link>https://rest.sh/docs/reference/edit-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/edit-command/</guid><description>&lt;p&gt;&lt;code&gt;edit&lt;/code&gt; is for APIs where a resource is easier to review in an editor than to
rebuild from command-line arguments. Restish fetches the resource, opens it in
your editor, then sends the changed document back with the appropriate update
request.&lt;/p&gt;
&lt;h2 id="generated-command-reference"&gt;Generated Command Reference&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen edit-command --&gt;
&lt;p&gt;Generated from the current Cobra command tree.&lt;/p&gt;
&lt;h3 id="restish-edit"&gt;&lt;code&gt;restish edit&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Fetch a resource, edit it locally, then send it back&lt;/p&gt;
&lt;p&gt;Fetch a resource, edit it locally, then send the changed representation back.&lt;/p&gt;</description></item><item><title>Plugin Command</title><link>https://rest.sh/docs/reference/plugin-command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/plugin-command/</guid><description>&lt;p&gt;Plugins extend Restish without making every feature part of the core binary.
Operators use the &lt;code&gt;plugin&lt;/code&gt; command to install, list, remove, and debug those
extensions. Authors use the plugin reference pages to understand the protocols.&lt;/p&gt;
&lt;p&gt;Installed plugins are executable code and run at your own risk. Restish checks
manifests and declared capabilities; it does not sandbox plugins or verify
publisher identity.&lt;/p&gt;
&lt;h2 id="generated-command-reference"&gt;Generated Command Reference&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen plugin-command --&gt;
&lt;p&gt;Generated from the current Cobra command tree.&lt;/p&gt;</description></item><item><title>Plugin Manifest</title><link>https://rest.sh/docs/reference/plugin-manifest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/plugin-manifest/</guid><description>&lt;p&gt;A plugin manifest tells Restish what a plugin is, what protocol version it uses,
and which hooks or command surfaces it provides.&lt;/p&gt;
&lt;h2 id="generated-schema"&gt;Generated Schema&lt;/h2&gt;
&lt;!-- BEGIN GENERATED: restish-docgen plugin-manifest-schema --&gt;
&lt;p&gt;Generated from &lt;code&gt;plugin/manifest.go&lt;/code&gt; and &lt;code&gt;plugin/messages.go&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="manifest"&gt;&lt;code&gt;Manifest&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Manifest is the metadata a plugin reports when called with &amp;ndash;rsh-plugin-manifest. Plugin authors populate and write this with WriteManifest instead of manually marshalling CBOR.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;Name&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;CBOR: &lt;code&gt;name&lt;/code&gt;; JSON: &lt;code&gt;name&lt;/code&gt;; type: &lt;code&gt;string&lt;/code&gt;; required: yes&lt;/p&gt;
&lt;p&gt;Name is the stable plugin identifier, without the &amp;ldquo;restish-&amp;rdquo; executable prefix.&lt;/p&gt;</description></item><item><title>Plugin Messages</title><link>https://rest.sh/docs/reference/plugin-messages/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/plugin-messages/</guid><description>&lt;p&gt;Restish v2 plugins communicate over structured messages. Operators usually need
&lt;code&gt;plugin debug&lt;/code&gt;; authors need the message families and lifecycle rules.&lt;/p&gt;
&lt;p&gt;All startup and runtime messages are CBOR data items on stdin/stdout. CBOR is
self-delimiting, so there is no length prefix or line framing. Startup discovery
writes a single message and exits. Command plugins and TLS signer plugins keep
one decoder open for the process lifetime because later messages can already be
buffered.&lt;/p&gt;</description></item><item><title>Embedding Restish in Go</title><link>https://rest.sh/docs/reference/embedding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://rest.sh/docs/reference/embedding/</guid><description>&lt;p&gt;Restish can be used as a Go library when an organization wants to ship a
branded CLI while keeping Restish&amp;rsquo;s request pipeline, OpenAPI command
generation, auth, output, and plugin behavior.&lt;/p&gt;
&lt;p&gt;Use out-of-process plugins for the stock &lt;code&gt;restish&lt;/code&gt; binary. Use embedding when
you own the binary and need in-process defaults or extensions.&lt;/p&gt;
&lt;h2 id="minimal-custom-cli"&gt;Minimal Custom CLI&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;os&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;restish&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;github.com/rest-sh/restish/v2&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nx"&gt;cli&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;restish&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;New&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cli&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;nil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="nx"&gt;cli&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;HandleError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;Run&lt;/code&gt; installs SIGINT/SIGTERM handling by default so Ctrl-C cancels in-flight
requests in the stock CLI. If your application already owns process signal
handling, disable Restish&amp;rsquo;s handler before running:&lt;/p&gt;</description></item></channel></rss>