Command line

porticol-cli runs collections, flows and performance tests in CI, and lints and diffs OpenAPI documents. This page is its help, as porticol-cli help prints it.

Usage

porticol-cli run <collection-file> [options]
porticol-cli run --server <url> --collection <id|name> [options]
porticol-cli perf <collection-file> [options]
porticol-cli perf --server <url> --collection <id|name> [options]
porticol-cli flow <flow-file> [options]
porticol-cli diff <base-document> <head-document> [options]
porticol-cli lint <document> [options]
porticol-cli mcp [--data-dir <path>] [--write]

Diff options

Option What it does
--fail-on <level> breaking (the default), potentially-breaking, none
-f, --format text|json what to print; the default is text
-r, --reporter text|json the same as --format

Lint options

Option What it does
--rule <names> rule names to run, comma-separated
--rules <names|config> rule names, or a YAML or JSON rule configuration file: a value that names a file is read as one
-f, --format text|json what to print; the default is text
-r, --reporter text|json the same as --format

A collection file is a Porticol export, a Postman collection or the plain-text format. A flow file is a flow as the app keeps it, in JSON.

Sources

Option What it does
--server <url> a Porticol Cloud or Team Server, or PORTICOL_SERVER
--token <token> an API token for it, or PORTICOL_TOKEN, or the file named by PORTICOL_TOKEN_FILE
--collection <id|name> the server's collection to run
--folder <name|id> run this folder's requests alone
-e, --environment <file|name> an environment file, or the name or id of one of the server's environments
--remote run on the server rather than here (run only)

Run options

Option What it does
-d, --data <file> a CSV or JSON dataset, one row per iteration
-n, --iterations <n> how many times to run the collection
--concurrency <n> requests in flight at once
--delay <ms> the wait before each request but the first
--timeout <ms> the request timeout where the collection sets none
--bail stop at the first failing request
--schema <document> check every response against an OpenAPI document

Perf options

Option What it does
-u, --users <n> virtual users, 1 to 200 (default 10)
--duration <time> how long the load lasts, as 1500ms, 90s, 5m or 1h, from 1s to 1h (default 60s)
--ramp-up <time> the users start spread across this (default 0s)
--threshold <measure=n> the run fails unless this holds: p50, p90, p95, p99, max and mean in ms, and error_rate in percent, at most n; requests_per_second at least n. Repeatable
--timeout <ms> as for run

Flow options

Option What it does
--bail stop the flow at the first failing request

Mcp options

Option What it does
--data-dir <path> the workspace to serve: PORTICOL_DATA_DIR, or the desktop's data folder
--write offer the tools that change the workspace; without it every write tool is refused

Reports

Option What it does
-r, --reporter <name[:path]> cli, junit, json or html, to standard output or to the file at path; repeat for several. perf reports as cli, json or html
--junit <path> the same as -r junit:<path>
--json <path> the same as -r json:<path>
--html <path> the same as -r html:<path>
--no-color plain output even on a terminal

porticol-cli never prompts. Only mcp reads standard input, speaking MCP over it. A server does not give out the values of secret variables, so a run names each one it leaves unresolved.

Exit codes

Code Meaning
0 every request, assertion and threshold passed
1 an assertion, a schema check or a threshold failed, or a flow stopped
2 a request could not be made
3 the command line, a file, the configuration or the token is wrong
4 the licence refused the run
5 the head document breaks the base document, at the level --fail-on names
6 the document has a lint finding of severity error