npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kapso/cli

v0.16.0

Published

Kapso CLI for source-controlled workflows, functions, WhatsApp numbers, conversations, messages, and templates

Readme

@kapso/cli

CLI for operating Kapso projects from the terminal, including source-controlled functions, workflows, WhatsApp numbers, conversations, messages, and templates.

oclif Version Downloads/week

Usage

$ npm install -g @kapso/cli
$ kapso COMMAND
running command...
$ kapso (--version)
@kapso/cli/0.16.0 darwin-arm64 node-v24.15.0
$ kapso --help [COMMAND]
USAGE
  $ kapso COMMAND
...

Common flow:

kapso setup
kapso status
kapso whatsapp numbers list
kapso whatsapp conversations list
kapso whatsapp messages send --phone-number-id <phone-number-id> --to <wa-id> --text "Hello"

CI / non-interactive flow:

export KAPSO_API_KEY=your_project_api_key

kapso status
kapso customers list
kapso whatsapp numbers list
kapso setup --customer <customer-id>

When KAPSO_API_KEY is set, project-scoped commands use it directly and ignore stored login context. Account commands such as kapso login and kapso projects list still use the normal browser login flow.

Kapso collects minimal authenticated CLI usage telemetry through the Kapso app to understand command reliability and usage. Telemetry includes the command name, CLI version, duration, exit status, and current project ID when already known locally. It never sends raw arguments, flags, message bodies, phone numbers, file paths, working directory, environment variables, tokens, raw errors, stacks, or response bodies. Set KAPSO_TELEMETRY_DISABLED=1 or DO_NOT_TRACK=1 to opt out.

Source-controlled projects

Use kapso link, kapso pull, and kapso push when you want a Kapso project represented by local files that can live in git. The first source sync scope is functions and workflows.

kapso login
kapso link --project <project-id>
kapso pull

This creates a small repo binding and writes project source files:

kapso.yaml
.kapso/project.json
.kapso/remote-map.json
functions/<function-slug>/function.yaml
functions/<function-slug>/index.js
workflows/<workflow-slug>/workflow.yaml
workflows/<workflow-slug>/definition.json

kapso.yaml and the functions/ and workflows/ directories are intended to be committed. .kapso/project.json stores the local project binding, and .kapso/remote-map.json stores the last pulled remote state used for dirty-file and stale-remote checks.

Workflows as code

Workflows can be edited as JSON/YAML only, or authored with @kapso/workflows.

npm install @kapso/workflows

kapso pull writes a generated workflow.js file beside pulled workflow JSON when no workflow source file exists yet. Edit that file when you want code to become the source of truth, or keep editing workflow.yaml and definition.json directly. After workflow.js or workflow.ts has been edited, kapso pull preserves it and only updates the remote-owned workflow.yaml and definition.json files.

If workflows/<slug>/workflow.ts or workflows/<slug>/workflow.js exists, kapso build compiles it into workflow.yaml and definition.json.

import { START, Workflow } from "@kapso/workflows";

const workflow = new Workflow("inbound-support", {
  name: "Inbound Support",
});

workflow.addTrigger({
  type: "inbound_message",
  phoneNumberId: "<phone-number-id>",
});
workflow.addNode(START, {
  position: { x: 100, y: 100 },
});
workflow.addNode("reply", {
  type: "send_text",
  message: "Thanks for reaching out.",
});
workflow.addEdge(START, "reply");

export default workflow;

If no workflow code file exists, the CLI uses the existing workflow.yaml and definition.json files directly. This keeps the CLI compatible with projects that prefer editing pulled JSON instead of using the TypeScript library.

When a workflow source file exists, kapso push compiles it only after that source file changes. This lets kapso pull refresh JSON from the remote app without replacing hand-authored workflow code with generated raw code.

When workflow code is the source of truth, committing the generated workflow.yaml and definition.json files is a repo decision. Keeping them in git makes diffs visible without running a build. Ignoring them keeps the repo focused on authored code.

/workflows/*/definition.json
/workflows/*/workflow.yaml

Pull, build, and push

kapso pull
kapso build
kapso push --dry-run
kapso push

Target one object when you do not want to pull or push every source file:

kapso pull workflow <workflow-slug>
kapso pull function <function-slug>
kapso pull workflow <workflow-slug> --diff
kapso push workflow <workflow-slug>
kapso push function <function-slug>

kapso pull refuses to overwrite locally edited remote-owned files and prints a compact incoming diff when it is blocked. Authored workflow source files are preserved instead of blocked. Use kapso pull --diff to inspect all blocked diffs without writing files, or kapso pull --overwrite when the remote copy should replace local edits in remote-owned files. Targeted pull uses the same dirty-file protection, but only for the selected function or workflow. kapso push refuses to update a remote function or workflow that changed since your last pull. Remote-only objects are reported, but not deleted.

kapso push does not activate draft workflows. After a real workflow push, the CLI prints a link to open the workflow in Kapso so you can review and activate it from the web app.

Commands

kapso build

Compile Kapso workflow.ts or workflow.js files into source JSON

USAGE
  $ kapso build

DESCRIPTION
  Compile Kapso workflow.ts or workflow.js files into source JSON

See code: src/commands/build.ts

kapso customers get CUSTOMERID

Get a customer by ID

USAGE
  $ kapso customers get CUSTOMERID [--output json|human] [--project <value>]

ARGUMENTS
  CUSTOMERID  Customer ID

FLAGS
  --output=<option>  [default: json] Output format
                     <options: json|human>
  --project=<value>  Project ID override

DESCRIPTION
  Get a customer by ID

See code: src/commands/customers/get.ts

kapso customers list

List customers in the current project

USAGE
  $ kapso customers list [--output json|human] [--project <value>]

FLAGS
  --output=<option>  [default: json] Output format
                     <options: json|human>
  --project=<value>  Project ID override

DESCRIPTION
  List customers in the current project

See code: src/commands/customers/list.ts

kapso customers new

Create a customer in the current project

USAGE
  $ kapso customers new --external-id <value> --name <value> [--output json|human] [--project <value>]

FLAGS
  --external-id=<value>  (required) External customer identifier
  --name=<value>         (required) Customer name
  --output=<option>      [default: json] Output format
                         <options: json|human>
  --project=<value>      Project ID override

DESCRIPTION
  Create a customer in the current project

See code: src/commands/customers/new.ts

kapso help [COMMAND]

Display help for kapso.

USAGE
  $ kapso 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 kapso.

See code: @oclif/plugin-help

kapso link

Bind this directory to a Kapso project for pull and push

USAGE
  $ kapso link [--project <value>] [--verify]

FLAGS
  --project=<value>  Project ID override
  --[no-]verify      Verify Platform API access before writing the binding

DESCRIPTION
  Bind this directory to a Kapso project for pull and push

See code: src/commands/link.ts

kapso login

Log in to Kapso

USAGE
  $ kapso login

DESCRIPTION
  Log in to Kapso

EXAMPLES
  $ kapso login

See code: src/commands/login.ts

kapso logout

Log out from Kapso

USAGE
  $ kapso logout

DESCRIPTION
  Log out from Kapso

EXAMPLES
  $ kapso logout

See code: src/commands/logout.ts

kapso projects current

Show the current project context

USAGE
  $ kapso projects current [--output json|human]

FLAGS
  --output=<option>  [default: json] Output format
                     <options: json|human>

DESCRIPTION
  Show the current project context

See code: src/commands/projects/current.ts

kapso projects list

List projects available to the current account

USAGE
  $ kapso projects list [--output json|human]

FLAGS
  --output=<option>  [default: json] Output format
                     <options: json|human>

DESCRIPTION
  List projects available to the current account

See code: src/commands/projects/list.ts

kapso projects use PROJECTID

Use a project as the default for project-scoped commands

USAGE
  $ kapso projects use PROJECTID

ARGUMENTS
  PROJECTID  Project ID to persist as the current project

DESCRIPTION
  Use a project as the default for project-scoped commands

See code: src/commands/projects/use.ts

kapso pull [KIND] [SLUG]

Pull Kapso functions and workflows into this repo

USAGE
  $ kapso pull [KIND] [SLUG] [--diff] [--overwrite] [--project <value>]

ARGUMENTS
  [KIND]  (function|workflow) Optional source kind to pull
  [SLUG]  Function or workflow slug to pull

FLAGS
  --diff             Show incoming diffs for blocked local edits without writing files
  --overwrite        Overwrite local files that changed since the last pull
  --project=<value>  Project ID override

DESCRIPTION
  Pull Kapso functions and workflows into this repo

See code: src/commands/pull.ts

kapso push [KIND] [SLUG]

Push local Kapso functions and workflows

USAGE
  $ kapso push [KIND] [SLUG] [--dry-run] [--project <value>]

ARGUMENTS
  [KIND]  (function|workflow) Optional source kind to push
  [SLUG]  Function or workflow slug to push

FLAGS
  --dry-run          Show the push plan without changing remote resources
  --project=<value>  Project ID override

DESCRIPTION
  Push local Kapso functions and workflows

See code: src/commands/push.ts

kapso setup

Guided first-time setup for Kapso and a WhatsApp number

USAGE
  $ kapso setup [--area-code <value>] [--connection-type coexistence|dedicated...] [--country <value>...]
    [--customer <value>] [--failure-url <value>] [--language <value>] [--no-provision-phone-number] [--output
    json|human] [--project <value>] [--success-url <value>]

FLAGS
  --area-code=<value>            Preferred phone number area code
  --connection-type=<option>...  Allowed connection type (defaults to dedicated)
                                 <options: coexistence|dedicated>
  --country=<value>...           Preferred phone number country ISO
  --customer=<value>             Customer ID override
  --failure-url=<value>          Failure redirect URL
  --language=<value>             Setup link language
  --no-provision-phone-number    Do not auto-provision a phone number during setup
  --output=<option>              [default: human] Output format
                                 <options: json|human>
  --project=<value>              Project ID override
  --success-url=<value>          Success redirect URL

DESCRIPTION
  Guided first-time setup for Kapso and a WhatsApp number

See code: src/commands/setup.ts

kapso status

Show Kapso setup and project status

USAGE
  $ kapso status [--output json|human]

FLAGS
  --output=<option>  [default: human] Output format
                     <options: json|human>

DESCRIPTION
  Show Kapso setup and project status

See code: src/commands/status.ts

kapso whatsapp conversations get CONVERSATIONID

Get a WhatsApp conversation by ID

USAGE
  $ kapso whatsapp conversations get CONVERSATIONID [--output json|human] [--project <value>]

ARGUMENTS
  CONVERSATIONID  Conversation ID

FLAGS
  --output=<option>  [default: json] Output format
                     <options: json|human>
  --project=<value>  Project ID override

DESCRIPTION
  Get a WhatsApp conversation by ID

See code: src/commands/whatsapp/conversations/get.ts

kapso whatsapp conversations list

List WhatsApp conversations in the current project, sorted by most recent activity

USAGE
  $ kapso whatsapp conversations list [--assigned-user <value>] [--output json|human] [--page <value>] [--per-page <value>]
    [--phone <value>] [--phone-number <value>] [--phone-number-id <value>] [--project <value>] [--status active|ended]
    [--unassigned]

FLAGS
  --assigned-user=<value>    Filter by assigned user ID
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --page=<value>             Page number
  --per-page=<value>         Results per page
  --phone=<value>            Filter by contact phone number
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override
  --status=<option>          Filter by conversation status
                             <options: active|ended>
  --unassigned               Only include unassigned conversations

DESCRIPTION
  List WhatsApp conversations in the current project, sorted by most recent activity

See code: src/commands/whatsapp/conversations/list.ts

kapso whatsapp messages get MESSAGEID

Get a WhatsApp message by ID

USAGE
  $ kapso whatsapp messages get MESSAGEID [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  MESSAGEID  Message ID

FLAGS
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Get a WhatsApp message by ID

See code: src/commands/whatsapp/messages/get.ts

kapso whatsapp messages list

List WhatsApp messages in the current project (cursor pagination)

USAGE
  $ kapso whatsapp messages list [--after <value>] [--before <value>] [--conversation <value>] [--direction
    inbound|outbound] [--limit <value>] [--output json|human] [--per-page <value>] [--phone-number <value>]
    [--phone-number-id <value>] [--project <value>] [--since <value>] [--status pending|sent|delivered|read|failed]
    [--until <value>]

FLAGS
  --after=<value>            Cursor for the next page
  --before=<value>           Cursor for the previous page
  --conversation=<value>     Filter by conversation ID. If no WhatsApp number is provided, it is resolved from the
                             conversation.
  --direction=<option>       Filter by direction
                             <options: inbound|outbound>
  --limit=<value>            Maximum number of messages to return
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --per-page=<value>         Alias for --limit on cursor-paginated responses
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override
  --since=<value>            Filter by messages created at/after this timestamp
  --status=<option>          Filter by message status
                             <options: pending|sent|delivered|read|failed>
  --until=<value>            Filter by messages created at/before this timestamp

DESCRIPTION
  List WhatsApp messages in the current project (cursor pagination)

See code: src/commands/whatsapp/messages/list.ts

kapso whatsapp messages send

Send a WhatsApp message

USAGE
  $ kapso whatsapp messages send [--input <value>] [--output json|human] [--phone-number <value>] [--phone-number-id
    <value>] [--project <value>] [--stdin] [--text <value>] [--to <value>]

FLAGS
  --input=<value>            Path to a JSON payload file
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override
  --stdin                    Read the JSON payload from stdin
  --text=<value>             Text body shortcut
  --to=<value>               Recipient phone number

DESCRIPTION
  Send a WhatsApp message

See code: src/commands/whatsapp/messages/send.ts

kapso whatsapp numbers get [NUMBERREF]

Get a WhatsApp number by Meta ID or display phone number

USAGE
  $ kapso whatsapp numbers get [NUMBERREF] [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  [NUMBERREF]  WhatsApp phone number ID or display phone number

FLAGS
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Get a WhatsApp number by Meta ID or display phone number

See code: src/commands/whatsapp/numbers/get.ts

kapso whatsapp numbers health [NUMBERREF]

Run a health check for a WhatsApp number

USAGE
  $ kapso whatsapp numbers health [NUMBERREF] [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  [NUMBERREF]  WhatsApp phone number ID or display phone number

FLAGS
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Run a health check for a WhatsApp number

See code: src/commands/whatsapp/numbers/health.ts

kapso whatsapp numbers list

List WhatsApp numbers in the current project

USAGE
  $ kapso whatsapp numbers list [--customer <value>] [--output json|human] [--page <value>] [--per-page <value>] [--project
    <value>]

FLAGS
  --customer=<value>  Filter by customer ID
  --output=<option>   [default: json] Output format
                      <options: json|human>
  --page=<value>      Page number
  --per-page=<value>  Results per page
  --project=<value>   Project ID override

DESCRIPTION
  List WhatsApp numbers in the current project

See code: src/commands/whatsapp/numbers/list.ts

kapso whatsapp numbers new

Start WhatsApp number setup in the current project

USAGE
  $ kapso whatsapp numbers new [--area-code <value>] [--connection-type coexistence|dedicated...] [--country <value>...]
    [--customer <value>] [--failure-url <value>] [--language <value>] [--no-provision-phone-number] [--output
    json|human] [--project <value>] [--success-url <value>]

FLAGS
  --area-code=<value>            Preferred phone number area code
  --connection-type=<option>...  Allowed connection type (defaults to dedicated)
                                 <options: coexistence|dedicated>
  --country=<value>...           Preferred phone number country ISO
  --customer=<value>             Customer ID override
  --failure-url=<value>          Failure redirect URL
  --language=<value>             Setup link language
  --no-provision-phone-number    Do not auto-provision a phone number during setup
  --output=<option>              [default: human] Output format
                                 <options: json|human>
  --project=<value>              Project ID override
  --success-url=<value>          Success redirect URL

DESCRIPTION
  Start WhatsApp number setup in the current project

See code: src/commands/whatsapp/numbers/new.ts

kapso whatsapp numbers resolve [NUMBERREF]

Resolve a WhatsApp number reference to a canonical phone number ID

USAGE
  $ kapso whatsapp numbers resolve [NUMBERREF] [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  [NUMBERREF]  WhatsApp phone number ID or display phone number

FLAGS
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Resolve a WhatsApp number reference to a canonical phone number ID

See code: src/commands/whatsapp/numbers/resolve.ts

kapso whatsapp templates get TEMPLATEID

Get a WhatsApp template by ID

USAGE
  $ kapso whatsapp templates get TEMPLATEID [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  TEMPLATEID  Template ID

FLAGS
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Get a WhatsApp template by ID

See code: src/commands/whatsapp/templates/get.ts

kapso whatsapp templates list

List WhatsApp templates for a number (cursor pagination)

USAGE
  $ kapso whatsapp templates list [--after <value>] [--before <value>] [--category MARKETING|UTILITY|AUTHENTICATION]
    [--language <value>] [--limit <value>] [--name <value>] [--output json|human] [--per-page <value>] [--phone-number
    <value>] [--phone-number-id <value>] [--project <value>] [--status
    APPROVED|PENDING|REJECTED|PAUSED|IN_APPEAL|DISABLED]

FLAGS
  --after=<value>            Cursor for the next page
  --before=<value>           Cursor for the previous page
  --category=<option>        Filter by template category
                             <options: MARKETING|UTILITY|AUTHENTICATION>
  --language=<value>         Filter by language code
  --limit=<value>            Maximum number of templates to return
  --name=<value>             Filter by template name
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --per-page=<value>         Alias for --limit on cursor-paginated responses
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override
  --status=<option>          Filter by template status
                             <options: APPROVED|PENDING|REJECTED|PAUSED|IN_APPEAL|DISABLED>

DESCRIPTION
  List WhatsApp templates for a number (cursor pagination)

See code: src/commands/whatsapp/templates/list.ts

kapso whatsapp templates new

Create a WhatsApp template for a number

USAGE
  $ kapso whatsapp templates new [--input <value>] [--output json|human] [--phone-number <value>] [--phone-number-id
    <value>] [--project <value>] [--stdin]

FLAGS
  --input=<value>            Path to a JSON payload file
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override
  --stdin                    Read the JSON payload from stdin

DESCRIPTION
  Create a WhatsApp template for a number

See code: src/commands/whatsapp/templates/new.ts

kapso whatsapp webhooks delete WEBHOOKID

Delete a WhatsApp webhook for a number

USAGE
  $ kapso whatsapp webhooks delete WEBHOOKID [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  WEBHOOKID  Webhook ID

FLAGS
  --output=<option>          [default: human] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Delete a WhatsApp webhook for a number

See code: src/commands/whatsapp/webhooks/delete.ts

kapso whatsapp webhooks get WEBHOOKID

Get a WhatsApp webhook by ID

USAGE
  $ kapso whatsapp webhooks get WEBHOOKID [--output json|human] [--phone-number <value>] [--phone-number-id <value>]
    [--project <value>]

ARGUMENTS
  WEBHOOKID  Webhook ID

FLAGS
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override

DESCRIPTION
  Get a WhatsApp webhook by ID

See code: src/commands/whatsapp/webhooks/get.ts

kapso whatsapp webhooks list

List WhatsApp webhooks for a number

USAGE
  $ kapso whatsapp webhooks list [--active] [--inactive] [--kind kapso|meta] [--output json|human] [--page <value>]
    [--per-page <value>] [--phone-number <value>] [--phone-number-id <value>] [--project <value>] [--url-contains
    <value>]

FLAGS
  --active                   Only include active webhooks
  --inactive                 Only include inactive webhooks
  --kind=<option>            Filter by webhook kind
                             <options: kapso|meta>
  --output=<option>          [default: json] Output format
                             <options: json|human>
  --page=<value>             Page number
  --per-page=<value>         Results per page
  --phone-number=<value>     WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>  WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                             "--phone-number".
  --project=<value>          Project ID override
  --url-contains=<value>     Filter by URL substring

DESCRIPTION
  List WhatsApp webhooks for a number

See code: src/commands/whatsapp/webhooks/list.ts

kapso whatsapp webhooks new

Create a WhatsApp webhook for a number

USAGE
  $ kapso whatsapp webhooks new --url <value> [--active] [--buffer-enabled] [--buffer-window-seconds <value>] [--event
    whatsapp.message.received|whatsapp.message.sent|whatsapp.message.delivered|whatsapp.message.read|whatsapp.message.fa
    iled|whatsapp.conversation.created|whatsapp.conversation.ended|whatsapp.conversation.inactive...] [--header
    <value>...] [--inactive] [--inactivity-minutes <value>] [--kind kapso|meta] [--max-buffer-size <value>] [--output
    json|human] [--payload-version v1|v2] [--phone-number <value>] [--phone-number-id <value>] [--project <value>]
    [--secret-key <value>]

FLAGS
  --active                         Create the webhook as active
  --[no-]buffer-enabled            Enable buffering for whatsapp.message.received
  --buffer-window-seconds=<value>  Buffer window in seconds (requires --buffer-enabled)
  --event=<option>...              Webhook event to subscribe to
                                   <options: whatsapp.message.received|whatsapp.message.sent|whatsapp.message.delivered|
                                   whatsapp.message.read|whatsapp.message.failed|whatsapp.conversation.created|whatsapp.
                                   conversation.ended|whatsapp.conversation.inactive>
  --header=<value>...              Custom header in Name=value format
  --inactive                       Create the webhook as inactive
  --inactivity-minutes=<value>     Minutes before sending whatsapp.conversation.inactive
  --kind=<option>                  Webhook kind
                                   <options: kapso|meta>
  --max-buffer-size=<value>        Maximum buffered events before flush (requires --buffer-enabled)
  --output=<option>                [default: human] Output format
                                   <options: json|human>
  --payload-version=<option>       Webhook payload version
                                   <options: v1|v2>
  --phone-number=<value>           WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>        WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                                   "--phone-number".
  --project=<value>                Project ID override
  --secret-key=<value>             Webhook secret key override
  --url=<value>                    (required) Webhook destination URL

DESCRIPTION
  Create a WhatsApp webhook for a number

See code: src/commands/whatsapp/webhooks/new.ts

kapso whatsapp webhooks update WEBHOOKID

Update a WhatsApp webhook for a number

USAGE
  $ kapso whatsapp webhooks update WEBHOOKID [--active] [--buffer-enabled] [--buffer-window-seconds <value>] [--clear-headers]
    [--event whatsapp.message.received|whatsapp.message.sent|whatsapp.message.delivered|whatsapp.message.read|whatsapp.m
    essage.failed|whatsapp.conversation.created|whatsapp.conversation.ended|whatsapp.conversation.inactive...] [--header
    <value>...] [--inactive] [--inactivity-minutes <value>] [--kind kapso|meta] [--max-buffer-size <value>] [--output
    json|human] [--payload-version v1|v2] [--phone-number <value>] [--phone-number-id <value>] [--project <value>]
    [--secret-key <value>] [--url <value>]

ARGUMENTS
  WEBHOOKID  Webhook ID

FLAGS
  --active                         Set the webhook to active
  --[no-]buffer-enabled            Enable buffering for whatsapp.message.received
  --buffer-window-seconds=<value>  Buffer window in seconds (requires --buffer-enabled)
  --clear-headers                  Replace custom headers with an empty object
  --event=<option>...              Webhook event to subscribe to
                                   <options: whatsapp.message.received|whatsapp.message.sent|whatsapp.message.delivered|
                                   whatsapp.message.read|whatsapp.message.failed|whatsapp.conversation.created|whatsapp.
                                   conversation.ended|whatsapp.conversation.inactive>
  --header=<value>...              Custom header in Name=value format
  --inactive                       Set the webhook to inactive
  --inactivity-minutes=<value>     Minutes before sending whatsapp.conversation.inactive
  --kind=<option>                  Webhook kind
                                   <options: kapso|meta>
  --max-buffer-size=<value>        Maximum buffered events before flush (requires --buffer-enabled)
  --output=<option>                [default: human] Output format
                                   <options: json|human>
  --payload-version=<option>       Webhook payload version
                                   <options: v1|v2>
  --phone-number=<value>           WhatsApp display phone number (resolved to a phone number ID)
  --phone-number-id=<value>        WhatsApp phone number ID (Meta internal ID). If you have the real number instead, use
                                   "--phone-number".
  --project=<value>                Project ID override
  --secret-key=<value>             Webhook secret key override
  --url=<value>                    Webhook destination URL

DESCRIPTION
  Update a WhatsApp webhook for a number

See code: src/commands/whatsapp/webhooks/update.ts