Command reference
Every furniops command, argument and flag in CLI 0.2.
Every command also takes the global options (--profile, --api-url,
--issuer, --audience, --mode, --json) and -h, --help.
| Command | Does |
|---|---|
furniops login | Sign in in the browser, or save an API key. |
furniops logout | Revoke the session and forget the credential. |
furniops whoami | Show who the profile is signed in as, and in which mode. |
furniops listen | Forward events to a local URL as signed webhook deliveries. |
furniops events tail | Print events as they happen. |
furniops trigger | Emit a sample event in test mode. |
furniops products get | Show a product. |
furniops sources run | Start a run of a source. |
furniops login
Sign in with your FurniOps account in the browser (OAuth device flow), or save an API key.
furniops login [--scopes <list>] [--no-browser] [--with-api-key]| Flag | Meaning |
|---|---|
--scopes <list> | Comma-separated permissions to ask for. Default: every permission a credential may hold. A permission no credential may hold is refused (exit 2) with the list of those allowed. |
--no-browser | Print the link without opening a browser. |
--with-api-key | Save an API key, read from standard input or typed at a hidden prompt, instead of signing in. Keys must start with fo_test_, fo_live_, fo_rk_test_ or fo_rk_live_. |
An account session acts in live mode, or in test mode with --mode test. With --json, the confirmation code and link are written
to standard error as one JSON object, so a wrapper can show them; the result goes to standard
output.
Permissions --scopes accepts: products:read, products:write, variants:read,
variants:write, offers:read, offers:write, sources:read, sources:write, runs:read,
runs:write, webhooks:read, webhooks:write, events:read, freshness:write,
api_keys:read, members:read, org:read, billing:read, audit:read, agent:read.
furniops logout
furniops logoutRevokes an account session's refresh token at the sign-in server (best effort: the local copy is
removed whatever the server answers) and deletes the profile's stored credential. It does not
touch FURNIOPS_API_KEY. Not signed in is not an error.
furniops whoami
furniops whoamiProfile: default
API: https://api.furniops.com
Mode: test
Key: fo_test_…a1b2 (from the keychain)For an account session it shows the email, organisation, scopes and when the access token expires
instead of the key. A key is never shown beyond its prefix and last four characters. Exits 3
when not signed in.
furniops listen
Forward events to a local URL as signed webhook deliveries, with no tunnel. See
furniops listen for the full guide.
furniops listen --forward-to <url> [--events <types>] [--payload thin|fat]
furniops listen --print-secret| Flag | Meaning |
|---|---|
-f, --forward-to <url> | Where to POST each event. A URL without a scheme gets http://: localhost:3000/webhooks. Required unless --print-secret. |
--events <types> | Comma-separated event types to forward. Default: all. An unknown type is refused (exit 2). |
--payload <kind> | thin or fat events. |
--print-secret | Print the profile's local whsec_ signing secret and exit. |
furniops events tail
Print events as they happen, until Ctrl+C.
furniops events tail [--events <types>] [--payload thin|fat] [--cursor <cursor>]| Flag | Meaning |
|---|---|
--events <types> | Comma-separated event types. Default: all. |
--payload <kind> | thin or fat events. |
--cursor <cursor> | Start after this feed cursor, to replay from a position. |
10:00:02 offer.changed evt_034XqBaL2mRLTZPXyRbaUi ofr_034XqBaL2mRLTZPXyRbaUg (test)Each line is the time, the type, the event ID and the subject, with (test) for test-mode
events. With --json, each line is the event's envelope exactly as received, ready for jq:
furniops events tail --json --events offer.changed | jq -r '.data.fields[] | "\(.path) \(.old) -> \(.new)"'furniops trigger
Emit a sample event in test mode (POST /v1/test/events).
furniops trigger <event-type>| Argument | Meaning |
|---|---|
<event-type> | Any public event type, such as offer.changed. An unknown type is refused (exit 2) with the list of types. |
Needs test mode: a fo_test_ key saved with furniops login --with-api-key or in
FURNIOPS_API_KEY, or a signed-in session with --mode test. With a live credential it exits 4 and says so. The event reaches your
test-mode webhook endpoints, the sandbox's feed and stream, and so any running
furniops listen.
furniops products get
furniops products get <id>| Argument | Meaning |
|---|---|
<id> | A product ID, prod_…. |
Prints the product with its variants and offers as JSON (GET /v1/products/{id}).
furniops sources run
Start a run of a source (POST /v1/sources/{id}/runs).
furniops sources run <id> [--stream catalogue|stock]| Argument or flag | Meaning |
|---|---|
<id> | A source ID, src_…. |
--stream <stream> | What to pull: catalogue (the default) or stock, for a source whose connector reads stock separately. |
Started run_034XqBaL2mRLTZPXyRbaUk (queued)A source runs one pull at a time: while a run is queued or running, or the source is paused or
disabled, the API answers 409 and the command exits 1.