@notiflows/cli
v0.1.0
Published
Notiflows CLI — manage notiflows (notification workflows) as code
Downloads
8
Maintainers
Readme
@notiflows/cli
Manage your Notiflows notification workflows as code. Pull notiflows into version-controlled files, edit them, push them back, and trigger runs — all from your terminal or CI.
The CLI is a thin client over the Notiflows Management API. Full documentation: https://notiflows.com/docs/cli.
Install
npm install -g @notiflows/cliOr run it without installing: npx @notiflows/cli --help.
This installs two binaries: notiflows and the shorthand nf.
Authenticate
The CLI uses an account token (prefix nf_at_). Create one in the dashboard under Account tokens, then:
notiflows login # paste the token (or pass --token / set NOTIFLOWS_TOKEN)
notiflows whoami # confirm the account and projectSee Account tokens for how they're scoped and rotated.
Quickstart
notiflows init # scaffold notiflows.json
notiflows pull # pull notiflows into ./.notiflows
notiflows notiflow push <handle> --publish # push the draft and publish itBetween pull and push, edit the files under .notiflows/notiflows/<handle>/.
Usage
$ npm install -g @notiflows/cli
$ notiflows COMMAND
running command...
$ notiflows (--version)
@notiflows/cli/0.1.0 linux-x64 node-v22.23.0
$ notiflows --help [COMMAND]
USAGE
$ notiflows COMMAND
...Commands
notiflows channel get HANDLEnotiflows channel listnotiflows diff [HANDLE]notiflows help [COMMAND]notiflows init [PROJECT]notiflows loginnotiflows logoutnotiflows notiflow activate HANDLEnotiflows notiflow archive HANDLEnotiflows notiflow deactivate HANDLEnotiflows notiflow get [HANDLE]notiflows notiflow listnotiflows notiflow new [HANDLE]notiflows notiflow open [HANDLE]notiflows notiflow publish [HANDLE]notiflows notiflow pull [HANDLE]notiflows notiflow push [HANDLE]notiflows notiflow rollback HANDLEnotiflows notiflow run [HANDLE]notiflows notiflow validate [HANDLE]notiflows notiflow versions HANDLEnotiflows project get [SLUG]notiflows project listnotiflows pullnotiflows pushnotiflows whoami
notiflows channel get HANDLE
Get a channel by handle.
USAGE
$ notiflows channel get HANDLE [--base-url <value>] [--project <value>] [--token <value>] [--json]
ARGUMENTS
HANDLE Channel handle
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Get a channel by handle.
EXAMPLES
$ notiflows channel get sendgrid-primarySee code: src/commands/channel/get.ts
notiflows channel list
List all channels in your project.
USAGE
$ notiflows channel list [--base-url <value>] [--project <value>] [--token <value>] [--json]
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
List all channels in your project.
EXAMPLES
$ notiflows channel listSee code: src/commands/channel/list.ts
notiflows diff [HANDLE]
Show differences between local notiflow files and the server.
USAGE
$ notiflows diff [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--json]
ARGUMENTS
[HANDLE] Notiflow handle (omit to diff all local notiflows)
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Show differences between local notiflow files and the server.
EXAMPLES
$ notiflows diff
$ notiflows diff welcome-series
$ notiflows diff --jsonSee code: src/commands/diff.ts
notiflows help [COMMAND]
Display help for notiflows.
USAGE
$ notiflows help [COMMAND...] [-n]
ARGUMENTS
[COMMAND...] Command to show help for.
FLAGS
-n, --nested-commands Include all nested commands in the output.
DESCRIPTION
Display help for notiflows.See code: @oclif/plugin-help
notiflows init [PROJECT]
Initialize a Notiflows project in the current directory.
USAGE
$ notiflows init [PROJECT]
ARGUMENTS
[PROJECT] Project slug
DESCRIPTION
Initialize a Notiflows project in the current directory.
EXAMPLES
$ notiflows init my-app
$ notiflows initSee code: src/commands/init.ts
notiflows login
Authenticate the Notiflows CLI with an account token.
USAGE
$ notiflows login [--base-url <value>] [--token <value>]
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--token=<value> Account token (nf_at_...)
DESCRIPTION
Authenticate the Notiflows CLI with an account token.
EXAMPLES
$ notiflows login
$ notiflows login --token nf_at_...See code: src/commands/login.ts
notiflows logout
Remove stored API credentials.
USAGE
$ notiflows logout
DESCRIPTION
Remove stored API credentials.
EXAMPLES
$ notiflows logoutSee code: src/commands/logout.ts
notiflows notiflow activate HANDLE
Activate a notiflow.
USAGE
$ notiflows notiflow activate HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]
ARGUMENTS
HANDLE Notiflow handle
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Activate a notiflow.
EXAMPLES
$ notiflows notiflow activate welcome-series
$ notiflows notiflow activate welcome-series --forceSee code: src/commands/notiflow/activate.ts
notiflows notiflow archive HANDLE
Archive a notiflow.
USAGE
$ notiflows notiflow archive HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]
ARGUMENTS
HANDLE Notiflow handle
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Archive a notiflow.
EXAMPLES
$ notiflows notiflow archive old-flow
$ notiflows notiflow archive old-flow --forceSee code: src/commands/notiflow/archive.ts
notiflows notiflow deactivate HANDLE
Deactivate a notiflow.
USAGE
$ notiflows notiflow deactivate HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]
ARGUMENTS
HANDLE Notiflow handle
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Deactivate a notiflow.
EXAMPLES
$ notiflows notiflow deactivate welcome-series
$ notiflows notiflow deactivate welcome-series --forceSee code: src/commands/notiflow/deactivate.ts
notiflows notiflow get [HANDLE]
Get a notiflow by handle.
USAGE
$ notiflows notiflow get [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--json]
ARGUMENTS
[HANDLE] Notiflow handle (inferred from the current directory if omitted)
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Get a notiflow by handle.
EXAMPLES
$ notiflows notiflow get welcome-series
$ notiflows notiflow get welcome-series --jsonSee code: src/commands/notiflow/get.ts
notiflows notiflow list
List all notiflows in your project.
USAGE
$ notiflows notiflow list [--base-url <value>] [--project <value>] [--token <value>] [--active <value>] [--json]
[-q <value>]
FLAGS
-q, --query=<value> Search by name or handle
--active=<value> Filter by active status (true/false)
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
List all notiflows in your project.
EXAMPLES
$ notiflows notiflow list
$ notiflows notiflow list --query=welcome
$ notiflows notiflow list --active=trueSee code: src/commands/notiflow/list.ts
notiflows notiflow new [HANDLE]
Create a new notiflow with a minimal configuration.
USAGE
$ notiflows notiflow new [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [-f] [-n <value>]
[-p] [-s <value>]
ARGUMENTS
[HANDLE] Notiflow handle (immutable slug)
FLAGS
-f, --force Skip directory creation confirmation
-n, --name=<value> Display name
-p, --push Push to server after creation
-s, --steps=<value> Comma-separated step types (email, sms, in_app, mobile_push, web_push, chat, webhook, wait,
digest, throttle)
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Create a new notiflow with a minimal configuration.
EXAMPLES
$ notiflows notiflow new
$ notiflows notiflow new welcome-email --name "Welcome Email"
$ notiflows notiflow new alerts --steps email,wait,sms
$ notiflows notiflow new alerts --steps email --pushSee code: src/commands/notiflow/new.ts
notiflows notiflow open [HANDLE]
Open a notiflow in the dashboard.
USAGE
$ notiflows notiflow open [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--dashboard-url
<value>] [--print]
ARGUMENTS
[HANDLE] Notiflow handle (inferred from the current directory if omitted)
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--dashboard-url=<value> [env: NOTIFLOWS_DASHBOARD_URL] Dashboard base URL
--print Print the URL instead of opening a browser
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Open a notiflow in the dashboard.
EXAMPLES
$ notiflows notiflow open welcome-series
$ notiflows notiflow open --printSee code: src/commands/notiflow/open.ts
notiflows notiflow publish [HANDLE]
Publish the current draft version of a notiflow.
USAGE
$ notiflows notiflow publish [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [-f]
ARGUMENTS
[HANDLE] Notiflow handle (inferred from the current directory if omitted)
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Publish the current draft version of a notiflow.
EXAMPLES
$ notiflows notiflow publish welcome-series
$ notiflows notiflow publish welcome-series --forceSee code: src/commands/notiflow/publish.ts
notiflows notiflow pull [HANDLE]
Pull notiflow(s) from the server to local files.
USAGE
$ notiflows notiflow pull [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--all] [-f]
ARGUMENTS
[HANDLE] Notiflow handle (omit for --all)
FLAGS
-f, --force Overwrite existing files without confirmation
--all Pull all notiflows
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Pull notiflow(s) from the server to local files.
EXAMPLES
$ notiflows notiflow pull welcome-series
$ notiflows notiflow pull --all
$ notiflows notiflow pull welcome-series --forceSee code: src/commands/notiflow/pull.ts
notiflows notiflow push [HANDLE]
Push notiflow(s) from local files to the server.
USAGE
$ notiflows notiflow push [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--all] [-f]
[--publish]
ARGUMENTS
[HANDLE] Notiflow handle (omit for --all)
FLAGS
-f, --force Overwrite even if the server changed since you pulled
--all Push all local notiflows
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--publish Publish after pushing
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Push notiflow(s) from local files to the server.
EXAMPLES
$ notiflows notiflow push welcome-series
$ notiflows notiflow push --all
$ notiflows notiflow push welcome-series --publishSee code: src/commands/notiflow/push.ts
notiflows notiflow rollback HANDLE
Discard unpublished changes and revert to the published version.
USAGE
$ notiflows notiflow rollback HANDLE [--base-url <value>] [--project <value>] [--token <value>] [-f]
ARGUMENTS
HANDLE Notiflow handle
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Discard unpublished changes and revert to the published version.
EXAMPLES
$ notiflows notiflow rollback welcome-series
$ notiflows notiflow rollback welcome-series --forceSee code: src/commands/notiflow/rollback.ts
notiflows notiflow run [HANDLE]
Run (trigger) a notiflow. The notiflow must be active and published; the run is attributed to your account token.
USAGE
$ notiflows notiflow run [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--actor <value>]
[-d <value>] [--draft] [-r <value>...] [--topic <value>]
ARGUMENTS
[HANDLE] Notiflow handle (inferred from the current directory if omitted)
FLAGS
-d, --data=<value> Template variables as a JSON object
-r, --recipient=<value>... Recipient external_id (repeatable)
--actor=<value> external_id of the actor performing the action
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--draft Run the current unpublished draft instead of the published version
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
--topic=<value> Topic to target instead of explicit recipients
DESCRIPTION
Run (trigger) a notiflow. The notiflow must be active and published; the run is attributed to your account token.
EXAMPLES
$ notiflows notiflow run welcome-series --recipient user_123
$ notiflows notiflow run welcome-series -r user_123 -r user_456 --data '{"order_id":"ORD-1"}'
$ notiflows notiflow run welcome-series --topic order-updates
$ notiflows notiflow run welcome-series --draft -r user_123 # test the unpublished draftSee code: src/commands/notiflow/run.ts
notiflows notiflow validate [HANDLE]
Validate a notiflow's current draft on the server (push local changes first).
USAGE
$ notiflows notiflow validate [HANDLE] [--base-url <value>] [--project <value>] [--token <value>] [--all] [--json]
ARGUMENTS
[HANDLE] Notiflow handle (omit for --all)
FLAGS
--all Validate all notiflows in the project
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Validate a notiflow's current draft on the server (push local changes first).
EXAMPLES
$ notiflows notiflow validate welcome-series
$ notiflows notiflow validate --all
$ notiflows notiflow validate --all --jsonSee code: src/commands/notiflow/validate.ts
notiflows notiflow versions HANDLE
List version history for a notiflow.
USAGE
$ notiflows notiflow versions HANDLE [--base-url <value>] [--project <value>] [--token <value>] [--json]
ARGUMENTS
HANDLE Notiflow handle
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
List version history for a notiflow.
EXAMPLES
$ notiflows notiflow versions welcome-seriesSee code: src/commands/notiflow/versions.ts
notiflows project get [SLUG]
Show project details.
USAGE
$ notiflows project get [SLUG] [--base-url <value>] [--json] [--project <value>] [--token <value>]
ARGUMENTS
[SLUG] Project slug
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug
--token=<value> [env: NOTIFLOWS_TOKEN] Account token
DESCRIPTION
Show project details.
EXAMPLES
$ notiflows project get my-appSee code: src/commands/project/get.ts
notiflows project list
List all projects in your account.
USAGE
$ notiflows project list [--base-url <value>] [--json] [--token <value>]
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--json Output as JSON
--token=<value> [env: NOTIFLOWS_TOKEN] Account token
DESCRIPTION
List all projects in your account.
EXAMPLES
$ notiflows project listSee code: src/commands/project/list.ts
notiflows pull
Pull all notiflows from the server to local files.
USAGE
$ notiflows pull [--base-url <value>] [--project <value>] [--token <value>] [-f]
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Pull all notiflows from the server to local files.
EXAMPLES
$ notiflows pull
$ notiflows pull --forceSee code: src/commands/pull.ts
notiflows push
Push all local notiflows to the server.
USAGE
$ notiflows push [--base-url <value>] [--project <value>] [--token <value>] [-f] [--publish]
FLAGS
-f, --force Skip confirmation
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--publish Publish all notiflows after pushing
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Push all local notiflows to the server.
EXAMPLES
$ notiflows push
$ notiflows push --publish
$ notiflows push --forceSee code: src/commands/push.ts
notiflows whoami
Verify API credentials and show account info.
USAGE
$ notiflows whoami [--base-url <value>] [--project <value>] [--token <value>]
FLAGS
--base-url=<value> [env: NOTIFLOWS_BASE_URL] API base URL
--project=<value> [env: NOTIFLOWS_PROJECT] Project slug (or set NOTIFLOWS_PROJECT)
--token=<value> [env: NOTIFLOWS_TOKEN] Account token (or set NOTIFLOWS_TOKEN)
DESCRIPTION
Verify API credentials and show account info.
EXAMPLES
$ notiflows whoamiSee code: src/commands/whoami.ts
