id = "restish" name = "Restish" homepage = "https://rest.sh/" description = "A CLI for interacting with REST APIs that expose an OpenAPI spec." executables = ["restish"] [dotfiles] # Current docs use restish.json below the XDG config directory on macOS, # Linux, and Unix; Windows uses %APPDATA%. Older official releases used # apis.json and macOS Application Support, so retain those documented paths. # https://rest.sh/docs/reference/config/ # https://github.com/danielgtaylor/restish/releases/tag/v0.18.0 paths = [] secret = [ "[configHome]/restish/restish.json", "%APPDATA%/restish/restish.json", "[configHome]/restish/apis.json", "[appData]/restish/apis.json", "%APPDATA%/restish/apis.json", ] [commands] format = 1 label = "Restish" description = "Make a one-off HTTP GET or POST request with headers, query parameters, filtering and output format. Registered-API commands, auth setup, pagination and plugins are not covered." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.subcommand]] path = ["get"] label = "GET a URL" description = "Perform an HTTP GET request against a full URL or registered API short-name URL." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://rest.sh/docs/reference/global-flags/" revision = "2026-10-27" evidence = """ restish get restish get https://api.example.com/items -f body.items -o table -H, --rsh-header repeatable Name: Value none Add request headers. -q, --rsh-query repeatable key=value none Add query params without hand-editing the URL. -f, --rsh-filter expression none Filter with shorthand or jq. -o, --rsh-output-format format auto auto, json, yaml, cbor, table, ndjson, lines, gron, toon, image, or plugin formats. -p, --rsh-profile profile name default or RSH_PROFILE Select API profile. --rsh-no-cache boolean false Bypass response cache reads and writes. --rsh-retry integer 2 Retry attempts for network errors and transient HTTP responses; 0 disables. --rsh-insecure boolean false Disable certificate verification as an explicit operator override. -v, --rsh-verbose count 0 -v shows request/response headers; -vv adds TLS details. """ [[commands.subcommand.field]] id = "url" label = "URL" type = "url" position = 0 sources = ["ref"] [[commands.subcommand.field]] id = "header" label = "Request headers" description = "One 'Name: Value' per entry." type = "string" option = ["--rsh-header", "-H"] multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "query" label = "Query parameters" description = "One key=value per entry." type = "string" option = ["--rsh-query", "-q"] multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "filter" label = "Filter" description = "Shorthand or jq expression, for example body.items." type = "string" option = ["--rsh-filter", "-f"] sources = ["ref"] [[commands.subcommand.field]] id = "output_format" label = "Output format" type = "enum" choices = [{ value = "auto", label = "Auto" }, { value = "json", label = "JSON" }, { value = "yaml", label = "YAML" }, { value = "table", label = "Table" }, { value = "ndjson", label = "NDJSON" }, { value = "lines", label = "Lines" }, { value = "gron", label = "Gron" }] option = ["--rsh-output-format", "-o"] sources = ["ref"] [[commands.subcommand.field]] id = "profile" label = "Profile" type = "string" option = ["--rsh-profile", "-p"] sources = ["ref"] [[commands.subcommand.field]] id = "no_cache" label = "Bypass cache" type = "boolean" option = ["--rsh-no-cache"] sources = ["ref"] [[commands.subcommand.field]] id = "retry" label = "Retry attempts" type = "integer" option = ["--rsh-retry"] sources = ["ref"] [[commands.subcommand.field]] id = "insecure" label = "Skip TLS verification" type = "boolean" option = ["--rsh-insecure"] sources = ["ref"] [[commands.subcommand.field]] id = "verbose" label = "Verbose" type = "count" option = ["--rsh-verbose", "-v"] sources = ["ref"] [[commands.subcommand.task]] id = "get_json" label = "GET and filter" fields = ["url", "filter", "output_format", "header", "query"] required = ["url"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["url", "header", "query", "filter", "output_format"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["profile", "no_cache", "retry", "insecure", "verbose"] [[commands.subcommand]] path = ["post"] label = "POST to a URL" description = "Perform an HTTP POST with an optional shorthand body, @file or stdin. Body arguments use Restish shorthand." [[commands.subcommand.source]] id = "ref" kind = "manual" url = "https://rest.sh/docs/reference/global-flags/" revision = "2026-10-27" evidence = """ restish post [body...] restish post https://api.example.com/items 'name: Ada, active: true' restish post -c json https://api.example.com/items @item.json restish post https://api.vendor.test/jobs 'name: demo' --rsh-retry 2 --rsh-retry-unsafe -H, --rsh-header repeatable Name: Value none Add request headers. -q, --rsh-query repeatable key=value none Add query params without hand-editing the URL. -f, --rsh-filter expression none Filter with shorthand or jq. -o, --rsh-output-format format auto auto, json, yaml, cbor, table, ndjson, lines, gron, toon, image, or plugin formats. --rsh-retry-unsafe boolean false Permit retries for POST, PUT, PATCH, and DELETE. """ [[commands.subcommand.field]] id = "url" label = "URL" type = "url" position = 0 sources = ["ref"] [[commands.subcommand.field]] id = "body" label = "Body" description = "Shorthand such as 'name: Ada, active: true', or @file.json. Leave empty to read stdin." type = "string" position = 1 multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "header" label = "Request headers" type = "string" option = ["--rsh-header", "-H"] multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "query" label = "Query parameters" type = "string" option = ["--rsh-query", "-q"] multiple = true sources = ["ref"] [[commands.subcommand.field]] id = "filter" label = "Filter" type = "string" option = ["--rsh-filter", "-f"] sources = ["ref"] [[commands.subcommand.field]] id = "retry_unsafe" label = "Allow retries for POST" type = "boolean" option = ["--rsh-retry-unsafe"] sources = ["ref"] [[commands.subcommand.task]] id = "post_json" label = "POST a body" fields = ["url", "body", "header", "filter"] required = ["url"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["url", "body", "header", "query", "filter"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["retry_unsafe"]