Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 0 additions & 39 deletions REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2197,9 +2197,6 @@ The token grants access to that tenant's data and is valid for 24 hours. Treat i
as a credential: it is intended for your own backend to hand to a tenant's session,
not to be pasted into a shell history or shared.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2236,9 +2233,6 @@ The URL grants access to that tenant's portal session, so treat it as a credenti
This requires a portal custom domain to be configured for the project; see
'hookdeck outpost config custom-domain'.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2664,9 +2658,6 @@ list' to see the outcome.

The destination must be enabled and must subscribe to the event's topic.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2775,9 +2766,6 @@ other outpost command. The credentials stored by 'hookdeck login' are not
accepted by the publish API, so pass `--api-key` or set HOOKDECK_API_KEY. You can
create a Project API key in the Hookdeck dashboard under project settings.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2847,9 +2835,6 @@ Dimensions: tenant_id, topic, destination_id
Omit `--granularity` for a single total over the whole range; set it (1h, 5m, 1d)
to bucket the results over time.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2889,9 +2874,6 @@ Dimensions: tenant_id, destination_id, destination_type, topic, status, code, ma
Omit `--granularity` for a single total over the whole range; set it (1h, 5m, 1d)
to bucket the results over time.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2927,9 +2909,6 @@ Show this project's Outpost configuration.
Pass a key to print just that value, which is convenient in scripts. Unset keys
are omitted unless you ask for one by name.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -2969,9 +2948,6 @@ see exactly what would change.
Some keys are managed for you and are rejected if set directly; the API says
which when that happens.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -3009,9 +2985,6 @@ hookdeck outpost config set --unset MAX_RETRY_LIMIT

Show the custom domain configured for the tenant portal, if any.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand All @@ -3037,9 +3010,6 @@ Configure a custom hostname for the tenant portal.
The response includes the DNS records to create. The domain is not usable until
they have propagated and been verified.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -3070,9 +3040,6 @@ Remove the tenant portal's custom domain.

Tenant portal URLs stop working until another domain is configured.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -3102,9 +3069,6 @@ Worth checking first when something is not behaving: configuration changes take
a short while to reach the deployment, and the status reports when it is still
being applied.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down Expand Up @@ -3165,9 +3129,6 @@ hookdeck_ prefix here as it does in 'hookdeck gateway mcp'.
Protocol traffic uses stdout only (JSON-RPC); status and errors from the CLI
before the server runs go to stderr.

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues

**Usage:**

```bash
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/attempt.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ func newAttemptCmd() *attemptCmd {
Use: "attempt",
Aliases: []string{"attempts"},
Args: validators.NoArgs,
Short: ShortBeta("Inspect delivery attempts"),
Long: LongBeta(`List or get attempts (single delivery tries for an event). Use --event-id to list attempts for an event.`),
Short: "Inspect delivery attempts",
Long: `List or get attempts (single delivery tries for an event). Use --event-id to list attempts for an event.`,
}

ac.cmd.AddCommand(newAttemptListCmd().cmd)
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/connection.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ func newConnectionCmd() *connectionCmd {
Use: "connection",
Aliases: []string{"connections"},
Args: validators.NoArgs,
Short: ShortBeta("Manage your connections"),
Long: LongBeta(`Manage connections between sources and destinations.
Short: "Manage your connections",
Long: `Manage connections between sources and destinations.

A connection links a source to a destination and defines how webhooks are routed.
You can create connections with inline source and destination creation, or reference
existing resources.`),
existing resources.`,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
initTelemetry(cmd)
if shouldShowConnectionDeprecation() {
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/destination.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ func newDestinationCmd() *destinationCmd {
Use: "destination",
Aliases: []string{"destinations"},
Args: validators.NoArgs,
Short: ShortBeta("Manage your destinations"),
Long: LongBeta(`Manage webhook and event destinations.
Short: "Manage your destinations",
Long: `Manage webhook and event destinations.

Destinations define where Hookdeck forwards events. Create destinations with a type (HTTP, CLI, MOCK_API),
optional URL and authentication, then connect them to sources via connections.`),
optional URL and authentication, then connect them to sources via connections.`,
}

dc.cmd.AddCommand(newDestinationListCmd().cmd)
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/event.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ func newEventCmd() *eventCmd {
Use: "event",
Aliases: []string{"events"},
Args: validators.NoArgs,
Short: ShortBeta("Inspect and manage events"),
Long: LongBeta(`List, get, retry, cancel, or mute events (processed webhook deliveries).
Filter by connection ID (--connection-id), status, source, or destination.`),
Short: "Inspect and manage events",
Long: `List, get, retry, cancel, or mute events (processed webhook deliveries).
Filter by connection ID (--connection-id), status, source, or destination.`,
}

ec.cmd.AddCommand(newEventListCmd().cmd)
Expand Down
16 changes: 0 additions & 16 deletions pkg/cmd/helptext.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,19 +62,3 @@ func LongEnableIntro(resource string) string {
func LongUpsertIntro(resource string) string {
return "Create a new " + resource + " or update an existing one by name (idempotent)."
}

// Beta help text for gateway/connection commands. Centralised so the feedback URL and wording stay consistent.
const BetaFeedbackSuffix = `

[BETA] This feature is in beta. Please share bugs and feedback via:
https://github.com/hookdeck/hookdeck-cli/issues`

// ShortBeta appends [BETA] to a short description for use in Cobra Short.
func ShortBeta(short string) string {
return short + " [BETA]"
}

// LongBeta appends the beta feedback paragraph to a long description for use in Cobra Long.
func LongBeta(long string) string {
return long + BetaFeedbackSuffix
}
6 changes: 3 additions & 3 deletions pkg/cmd/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ func newIssueCmd() *issueCmd {
Use: "issue",
Aliases: []string{"issues"},
Args: validators.NoArgs,
Short: ShortBeta("Manage your issues"),
Long: LongBeta(`Manage Hookdeck issues.
Short: "Manage your issues",
Long: `Manage Hookdeck issues.

Issues are automatically created when delivery failures, transformation errors,
or backpressure conditions are detected. Use these commands to list, inspect,
update the status of, or dismiss issues.`),
update the status of, or dismiss issues.`,
}

ic.cmd.AddCommand(newIssueListCmd().cmd)
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/mcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ func newMCPCmd() *mcpCmd {
mc.cmd = &cobra.Command{
Use: "mcp",
Args: validators.NoArgs,
Short: ShortBeta("Start an MCP server for AI agent access to Hookdeck"),
Long: LongBeta(`Starts a Model Context Protocol (MCP) server over stdio.
Short: "Start an MCP server for AI agent access to Hookdeck",
Long: `Starts a Model Context Protocol (MCP) server over stdio.

The server exposes Hookdeck Event Gateway resources — connections, sources,
destinations, events, requests, and more — as MCP tools that AI agents and
Expand All @@ -48,7 +48,7 @@ traffic uses stdout only (JSON-RPC); status and errors from the CLI before
the server runs go to stderr.

hookdeck_login stays registered after sign-in so you can call it with reauth: true
to replace credentials (e.g. when project listing fails with a narrow API key).`),
to replace credentials (e.g. when project listing fails with a narrow API key).`,
Example: ` # Start the MCP server, read-only (stdio transport)
hookdeck gateway mcp

Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/metrics.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,12 +170,12 @@ func newMetricsCmd() *metricsCmd {
mc.cmd = &cobra.Command{
Use: "metrics",
Args: validators.NoArgs,
Short: ShortBeta("Query Event Gateway metrics"),
Long: LongBeta(`Query metrics for events, requests, attempts, and transformations.
Short: "Query Event Gateway metrics",
Long: `Query metrics for events, requests, attempts, and transformations.
Requires --start and --end (ISO 8601 date-time). Use subcommands to choose the metric type.

For event metrics you can query volume, queue depth, pending over time, or per-issue;
use --measures, --dimensions, and --issue-id on the events subcommand.`),
use --measures, --dimensions, and --issue-id on the events subcommand.`,
}

mc.cmd.AddCommand(newMetricsEventsCmd().cmd)
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/metrics_attempts.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ func newMetricsAttemptsCmd() *metricsAttemptsCmd {
c.cmd = &cobra.Command{
Use: "attempts",
Args: cobra.NoArgs,
Short: ShortBeta("Query attempt metrics"),
Long: LongBeta(`Query metrics for delivery attempts (latency, success/failure). Measures: ` + hookdeck.AttemptMetricsMeasures + `.`),
Short: "Query attempt metrics",
Long: `Query metrics for delivery attempts (latency, success/failure). Measures: ` + hookdeck.AttemptMetricsMeasures + `.`,
RunE: c.runE,
}
addMetricsCommonFlags(c.cmd, &c.flags, hookdeck.AttemptMetricsFilters, hookdeck.AttemptMetricsDimensions, hookdeck.AttemptStatusValues)
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/metrics_events.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ func newMetricsEventsCmd() *metricsEventsCmd {
c.cmd = &cobra.Command{
Use: "events",
Args: cobra.NoArgs,
Short: ShortBeta("Query event metrics"),
Long: LongBeta(`Query event metrics: volume and success/failure counts, error rate, queue depth,
Short: "Query event metrics",
Long: `Query event metrics: volume and success/failure counts, error rate, queue depth,
pending over time, or per-issue. Use --measures and --dimensions to choose what to query.
Requires --start and --end.

Expand All @@ -33,7 +33,7 @@ them: queue_depth, max_depth, max_age and pending each select their own, and
none of them can be combined with per-issue (--dimensions issue_id, --issue-id).

Measures: ` + hookdeck.EventMetricsMeasures + `.
Dimensions: ` + metricsEventsDimensions + `.`),
Dimensions: ` + metricsEventsDimensions + `.`,
RunE: c.runE,
}
addMetricsCommonFlags(c.cmd, &c.flags, hookdeck.EventMetricsFilters, hookdeck.EventMetricsDimensions, hookdeck.EventStatusValues)
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/metrics_requests.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ func newMetricsRequestsCmd() *metricsRequestsCmd {
c.cmd = &cobra.Command{
Use: "requests",
Args: cobra.NoArgs,
Short: ShortBeta("Query request metrics"),
Long: LongBeta(`Query metrics for requests (acceptance, rejection, etc.). Measures: ` + hookdeck.RequestMetricsMeasures + `.`),
Short: "Query request metrics",
Long: `Query metrics for requests (acceptance, rejection, etc.). Measures: ` + hookdeck.RequestMetricsMeasures + `.`,
RunE: c.runE,
}
addMetricsCommonFlags(c.cmd, &c.flags, hookdeck.RequestMetricsFilters, hookdeck.RequestMetricsDimensions, hookdeck.RequestStatusValues)
Expand Down
4 changes: 2 additions & 2 deletions pkg/cmd/metrics_transformations.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ func newMetricsTransformationsCmd() *metricsTransformationsCmd {
c.cmd = &cobra.Command{
Use: "transformations",
Args: cobra.NoArgs,
Short: ShortBeta("Query transformation metrics"),
Long: LongBeta(`Query metrics for transformations. Measures: ` + hookdeck.TransformationMetricsMeasures + `.`),
Short: "Query transformation metrics",
Long: `Query metrics for transformations. Measures: ` + hookdeck.TransformationMetricsMeasures + `.`,
RunE: c.runE,
}
addMetricsCommonFlags(c.cmd, &c.flags, hookdeck.TransformationMetricsFilters, hookdeck.TransformationMetricsDimensions, hookdeck.TransformationStatusValues)
Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/outpost.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,14 +114,14 @@ func newOutpostCmd() *outpostCmd {
oc.cmd = &cobra.Command{
Use: "outpost",
Args: validators.NoArgs,
Short: ShortBeta("Manage your Hookdeck Outpost resources"),
Long: LongBeta(`Commands for managing Hookdeck Outpost tenants, destinations, events,
Short: "Manage your Hookdeck Outpost resources",
Long: `Commands for managing Hookdeck Outpost tenants, destinations, events,
attempts, topics, metrics, and project configuration.

Outpost delivers events to your users' destinations. Each of your users is a tenant,
and each tenant owns the destinations their events are delivered to.

These commands require an Outpost project. Use 'hookdeck project use' to switch.`),
These commands require an Outpost project. Use 'hookdeck project use' to switch.`,
Example: ` # List tenants
hookdeck outpost tenant list

Expand Down
6 changes: 3 additions & 3 deletions pkg/cmd/outpost_attempt.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ func newOutpostAttemptCmd() *outpostAttemptCmd {
Use: "attempt",
Aliases: []string{"attempts"},
Args: validators.NoArgs,
Short: ShortBeta("Inspect delivery attempts"),
Long: LongBeta(`Inspect delivery attempts — each try at delivering an event to a destination.
Short: "Inspect delivery attempts",
Long: `Inspect delivery attempts — each try at delivering an event to a destination.

This is where to look when a destination is not receiving events: attempts carry
the response code and body the destination returned.`),
the response code and body the destination returned.`,
}

ac.cmd.AddCommand(newOutpostAttemptListCmd().cmd)
Expand Down
18 changes: 9 additions & 9 deletions pkg/cmd/outpost_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,12 @@ func newOutpostConfigCmd() *outpostConfigCmd {
Use: "config",
Aliases: []string{"configs"},
Args: validators.NoArgs,
Short: ShortBeta("Manage Outpost project configuration"),
Long: LongBeta(`Read and change this project's Outpost configuration.
Short: "Manage Outpost project configuration",
Long: `Read and change this project's Outpost configuration.

These settings apply to the whole project — every tenant and destination — so a
change here affects all delivery. Changes take a short while to reach the
deployment; 'hookdeck outpost status' reports when it is still being applied.`),
deployment; 'hookdeck outpost status' reports when it is still being applied.`,
}

cc.cmd.AddCommand(newOutpostConfigGetCmd().cmd)
Expand All @@ -53,11 +53,11 @@ func newOutpostConfigGetCmd() *outpostConfigGetCmd {
cc.cmd = &cobra.Command{
Use: "get [key]",
Args: validators.MaximumNArgs(1),
Short: ShortBeta("Show project configuration"),
Long: LongBeta(`Show this project's Outpost configuration.
Short: "Show project configuration",
Long: `Show this project's Outpost configuration.

Pass a key to print just that value, which is convenient in scripts. Unset keys
are omitted unless you ask for one by name.`),
are omitted unless you ask for one by name.`,
RunE: cc.run,
Example: ` # Show everything that is set
hookdeck outpost config get
Expand Down Expand Up @@ -139,16 +139,16 @@ func newOutpostConfigSetCmd() *outpostConfigSetCmd {

cc.cmd = &cobra.Command{
Use: "set [KEY=VALUE ...]",
Short: ShortBeta("Change project configuration"),
Long: LongBeta(`Change this project's Outpost configuration.
Short: "Change project configuration",
Long: `Change this project's Outpost configuration.

Only the keys you pass are changed. --unset returns a key to its default.

This affects delivery for every tenant in the project, so use --dry-run first to
see exactly what would change.

Some keys are managed for you and are rejected if set directly; the API says
which when that happens.`),
which when that happens.`,
PreRunE: cc.validateFlags,
RunE: cc.run,
Example: ` # Set the topics destinations can subscribe to
Expand Down
Loading
Loading