From bcb940d3464bc67ac8823bdd0fe772d212470232 Mon Sep 17 00:00:00 2001 From: Martin Riedel <1713643+rado0x54@users.noreply.github.com> Date: Sun, 12 Jul 2026 10:13:14 +0200 Subject: [PATCH 1/2] =?UTF-8?q?refactor(go):=20shrink=20internal/api=20to?= =?UTF-8?q?=20models-only=20(7,485=E2=86=921,409=20lines)=20=E2=80=94=20da?= =?UTF-8?q?te-time=E2=86=92string=20Go=20overlay=20preserves=20Node's=20is?= =?UTF-8?q?oMillis=20wire=20format=20past=20the=20golden=20timestamp=20fol?= =?UTF-8?q?ding;=20spec=20requiredness=20tightened=20to=20Node's=20actual?= =?UTF-8?q?=20always-emit=20behavior;=20architecture=20doc=20=C2=A72/?= =?UTF-8?q?=C2=A75.5=20updated=20to=20describe=20the=20shipped=20hand-writ?= =?UTF-8?q?ten-chi=20design=20instead=20of=20the=20never-built=20strict-se?= =?UTF-8?q?rver=20one?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/api/oapi-codegen.yaml | 14 +- docs/api/openapi-go-overlay.yaml | 21 + docs/api/openapi.yaml | 10 +- docs/go-backend-architecture.md | 98 +- internal/api/api.gen.go | 6120 +----------------------------- internal/api/generate.go | 8 +- internal/httpserver/server.go | 4 +- 7 files changed, 128 insertions(+), 6147 deletions(-) create mode 100644 docs/api/openapi-go-overlay.yaml diff --git a/docs/api/oapi-codegen.yaml b/docs/api/oapi-codegen.yaml index 0a0777f..c25288c 100644 --- a/docs/api/oapi-codegen.yaml +++ b/docs/api/oapi-codegen.yaml @@ -4,8 +4,18 @@ # spec stays consumable by the pinned generator; the Go module (Phase 1, # internal/api) reuses the same config so CI and codegen cannot drift. # The generator version is pinned in scripts/check-api-codegen.sh. +# +# Models only: internal/rest hand-writes the chi handlers and marshals these +# generated types, so response shapes are compile-checked against the frozen +# spec while goldens + the route-coverage test remain the value-level oracle. +# If the spec unfreezes post-cutover and strict-server becomes worth its +# routing rewrite, re-enable chi-server/strict-server here. package: api generate: models: true - chi-server: true - strict-server: true +output-options: + # Go-binding overlay (date-time -> string; see that file's header). Path is + # relative to the go:generate working directory (internal/api). + overlay: + path: ../../docs/api/openapi-go-overlay.yaml + strict: true diff --git a/docs/api/openapi-go-overlay.yaml b/docs/api/openapi-go-overlay.yaml new file mode 100644 index 0000000..8a1e4a1 --- /dev/null +++ b/docs/api/openapi-go-overlay.yaml @@ -0,0 +1,21 @@ +# SPDX-License-Identifier: LicenseRef-FSL-1.1-Apache-2.0 +# +# OpenAPI Overlay applied by oapi-codegen (docs/api/oapi-codegen.yaml) before +# generating internal/api. Go-binding concerns only — this file must never +# change the wire contract, which lives exclusively in openapi.yaml. +# +# Why: Go's time.Time marshals as RFC3339Nano (variable fractional digits), +# but Node emits Date.toISOString() — always exactly ".000Z" millis. The +# goldens fold timestamps to placeholders by key, so a format drift would be +# invisible to the parity oracle. Binding date-time properties to plain Go +# strings forces handlers to format explicitly (rest.isoMillis), keeping the +# wire bytes identical to Node. +overlay: 1.0.0 +info: + title: Go type bindings for the frozen ShellWatch wire contract + version: 1.0.0 +actions: + - target: $..[?(@.format == "date-time")] + description: Bind all date-time properties to plain strings (see header). + update: + x-go-type: string diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 56d944f..1c521a3 100644 --- a/docs/api/openapi.yaml +++ b/docs/api/openapi.yaml @@ -160,12 +160,15 @@ components: properties: status: { type: string, enum: [created] } id: { type: string } + required: [status, id] StatusUpdated: type: object properties: { status: { type: string, enum: [updated] } } + required: [status] StatusDeleted: type: object properties: { status: { type: string, enum: [deleted] } } + required: [status] TerminalStatus: type: string @@ -193,7 +196,9 @@ components: mcpReason: { type: string } mcpClientName: { type: string } mcpClientVersion: { type: string } - required: [sessionId, endpointId, accountId, status, createdAt, source] + # lastActivityAt is always emitted: types.ts TerminalSession declares it + # non-optional and the manager sets it at create time. + required: [sessionId, endpointId, accountId, status, createdAt, lastActivityAt, source] Endpoint: type: object @@ -227,6 +232,9 @@ components: current: type: boolean description: True for the first-party web-UI client. + # All keys are always emitted (auth-sessions.ts AuthSessionView declares + # every field non-optional; the two dates are explicit nulls when absent). + required: [clientId, clientName, scopes, authorizedAt, createdAt, current] PendingActionView: type: object diff --git a/docs/go-backend-architecture.md b/docs/go-backend-architecture.md index 67dec81..4f467e9 100644 --- a/docs/go-backend-architecture.md +++ b/docs/go-backend-architecture.md @@ -48,26 +48,26 @@ WebAuthn/signing, Hydra glue, pending actions, audit, persistence. Every row is final. "Rejected" lists what #210 still had as alternatives and why they lost. Maintenance status verified July 2026. -| Concern | Winner | Rejected | Why | -| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| HTTP router | **`go-chi/chi` v5** | echo, bare `net/http` | 100% `net/http`-compatible (a chi router _is_ an `http.Handler`), so stdlib middleware and oapi-codegen validation work unchanged; subrouters/route groups fit the API+WS+MCP+Hydra surface; zero lock-in — dropping to stdlib later is trivial. Echo brings a foreign context type for no gain. Actively maintained (v5.3.0, 2026-05). | -| REST surface | **`oapi-codegen` v2, strict-server mode, chi target** | hand-written routes | Generated request/response types + handler interface from the frozen `openapi.yaml`; contract drift becomes a compile error. Spec-validation middleware via `oapi-codegen/nethttp-middleware` (kin-openapi). Committed generated code + `go generate` + CI diff (§5.5). Healthy (v2.7.1, 2026-06). | -| WebSocket | **`coder/websocket`** | gorilla/websocket, gobwas/ws | The only actively maintained option (v1.8.15, 2026-06). gorilla was revived in 2023 and has gone dormant _again_ (last release 2024-06, last push 2025-03). gobwas targets million-connection zero-copy servers — wrong tradeoff. coder's context-aware, concurrency-safe API fits our handler model. _Note:_ `agent-client/` uses gorilla today; it keeps working, but migrating it to coder/websocket is a cheap follow-up for one-dependency consistency. | -| SSH client | **`golang.org/x/crypto/ssh`** | — (already decided in #210) | Full OpenSSH cert support (`Certificate`, `NewCertSigner`, `CertChecker`); custom `ssh.Signer` carries the webauthn-sk-\* `Rest` payload verbatim — no fork. Kills the `rado0x54/ssh2#shellwatch` fork permanently. 2026 releases added parallel agent-signing pipelining (directly useful for the agent proxy). | -| SSH agent protocol (server side, `/agent-proxy`) | **`golang.org/x/crypto/ssh/agent`** (`agent.ServeAgent` over a WS-framed `io.ReadWriter`; we implement `agent.ExtendedAgent`) | hand-rolled protocol | Replaces the ssh2 fork's `AgentProtocol`. Same module as the SSH client — no new dependency. | -| MCP server | **`github.com/modelcontextprotocol/go-sdk`** ≥ v1.6 | — | Official SDK, stable since v1.0 with a no-breaking-changes guarantee (v1.6.1, 2026-05). Streamable-HTTP server transport, per-connection `ServerSession` state, server→client notifications — everything `/mcp` needs. Known wrinkle: strict Content-Type validation (escape hatch exists); validate against the MCP goldens early. | -| SQLite driver | **`modernc.org/sqlite`** (pure Go) | mattn/go-sqlite3 (cgo), ncruces/go-sqlite3 (wasm) | Static single binary + painless cross-compilation is the whole point of the rewrite's ops story; cgo kills both. PocketBase's default driver — battle-tested at exactly our scale. ncruces is credible but v0.x and adds a wazero runtime. Benchmarks show no meaningful perf gap at our load. | -| DB layer | **`sqlc`** | ent, sqlx, bare `database/sql` | ~8 tables, simple queries: sqlc generates fully typed Go from plain SQL with zero runtime dependency; the `.sql` files double as documentation of the persistence contract. ent is graph-ORM overkill; sqlx keeps hand-written scan targets. Active (v1.31.1, 2026-04). | -| Migrations | **`pressly/goose`** (embedded via `go:embed`, run at startup) | golang-migrate/migrate | Library-first API (`goose.SetBaseFS` + `goose.Up`) matches "auto-run at startup" exactly; supports Go-function migrations for future data backfills; more actively maintained (v3.27.2, 2026-06 vs migrate 2025-11). migrate's strength (many DBs, CLI) is irrelevant for one embedded SQLite file. | -| WebAuthn | **`github.com/go-webauthn/webauthn`** | — | Mature (used by Teleport), active (v0.17.4, 2026-05). The `protocol` package exposes raw authenticator data + COSE keys, which we need for OpenSSH `webauthn-sk-*` key derivation; `SessionData` is a plain struct so our own challenge store works. Still v0.x — pin and review changelogs. | -| Web Push | **`SherClockHolmes/webpush-go`** | — (missing from #210's table) | De-facto standard VAPID/Web-Push library. Small, replaceable behind the `NotificationChannel` seam if it ever stalls. Re-verify maintenance at implementation time. | -| YAML | **`goccy/go-yaml`** | ~~`gopkg.in/yaml.v3`~~ | **Correction to #210:** `go-yaml/yaml` (yaml.v3) was archived in 2025 and is unmaintained. goccy/go-yaml is the actively maintained successor the ecosystem converged on. | -| Config validation | **hand-rolled validation in `internal/config`** | go-playground/validator | The schema is small and zod's refinements (cross-field rules, defaults, custom messages) don't map to struct tags anyway. Plain Go `Validate()` methods are more readable than tag DSLs, cost zero dependencies, and validator's maintainer bandwidth is openly thin. | -| Logging | **`log/slog`** (stdlib) | zap, zerolog | Settled 2026 consensus for new services. Structured, leveled, zero deps. | -| Testing | **stdlib `testing` + `stretchr/testify` v1** | — | testify v1 remains the standard (explicitly no v2). | -| In-process SSH server (tests only) | **`gliderlabs/ssh`** | raw `x/crypto/ssh` server | Dormant (last release 2024-12) but stable, test-only, and saves ~200 lines of channel/PTY boilerplate per scenario. Tailscale and Charm maintain derivatives we could vendor from if a CVE ever surfaces. Eyes open, acceptable for a dev dependency. | -| Hydra admin client | **hand-written on `net/http`** | ory/hydra-client-go | The Node `admin-client.ts` is a thin typed wrapper over ~12 admin endpoints; a generated Ory SDK drags in a huge OpenAPI client for no benefit. Port the thin wrapper. | -| Static frontend | **`go:embed` of the SvelteKit build** | filesystem serving | One self-contained binary — the deploy story #210 promises. A `-static-dir` flag keeps the dev override. | +| Concern | Winner | Rejected | Why | +| ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| HTTP router | **`go-chi/chi` v5** | echo, bare `net/http` | 100% `net/http`-compatible (a chi router _is_ an `http.Handler`), so stdlib middleware and oapi-codegen validation work unchanged; subrouters/route groups fit the API+WS+MCP+Hydra surface; zero lock-in — dropping to stdlib later is trivial. Echo brings a foreign context type for no gain. Actively maintained (v5.3.0, 2026-05). | +| REST surface | **hand-written chi handlers marshaling `oapi-codegen` v2 model types** | strict-server mode | Handlers are hand-mounted on chi (`internal/rest`); response bodies marshal generated model types from the frozen `openapi.yaml`, so shape drift is a compile error while goldens + the route-coverage test stay the value-level oracle (§5.5). Strict-server was the original plan but buys little while the spec is frozen and forces a routing rewrite around the mixed mux — revisit post-cutover if the spec starts evolving. Committed generated code + `go generate` + CI diff. Healthy (v2.7.1, 2026-06). | +| WebSocket | **`coder/websocket`** | gorilla/websocket, gobwas/ws | The only actively maintained option (v1.8.15, 2026-06). gorilla was revived in 2023 and has gone dormant _again_ (last release 2024-06, last push 2025-03). gobwas targets million-connection zero-copy servers — wrong tradeoff. coder's context-aware, concurrency-safe API fits our handler model. _Note:_ `agent-client/` uses gorilla today; it keeps working, but migrating it to coder/websocket is a cheap follow-up for one-dependency consistency. | +| SSH client | **`golang.org/x/crypto/ssh`** | — (already decided in #210) | Full OpenSSH cert support (`Certificate`, `NewCertSigner`, `CertChecker`); custom `ssh.Signer` carries the webauthn-sk-\* `Rest` payload verbatim — no fork. Kills the `rado0x54/ssh2#shellwatch` fork permanently. 2026 releases added parallel agent-signing pipelining (directly useful for the agent proxy). | +| SSH agent protocol (server side, `/agent-proxy`) | **`golang.org/x/crypto/ssh/agent`** (`agent.ServeAgent` over a WS-framed `io.ReadWriter`; we implement `agent.ExtendedAgent`) | hand-rolled protocol | Replaces the ssh2 fork's `AgentProtocol`. Same module as the SSH client — no new dependency. | +| MCP server | **`github.com/modelcontextprotocol/go-sdk`** ≥ v1.6 | — | Official SDK, stable since v1.0 with a no-breaking-changes guarantee (v1.6.1, 2026-05). Streamable-HTTP server transport, per-connection `ServerSession` state, server→client notifications — everything `/mcp` needs. Known wrinkle: strict Content-Type validation (escape hatch exists); validate against the MCP goldens early. | +| SQLite driver | **`modernc.org/sqlite`** (pure Go) | mattn/go-sqlite3 (cgo), ncruces/go-sqlite3 (wasm) | Static single binary + painless cross-compilation is the whole point of the rewrite's ops story; cgo kills both. PocketBase's default driver — battle-tested at exactly our scale. ncruces is credible but v0.x and adds a wazero runtime. Benchmarks show no meaningful perf gap at our load. | +| DB layer | **`sqlc`** | ent, sqlx, bare `database/sql` | ~8 tables, simple queries: sqlc generates fully typed Go from plain SQL with zero runtime dependency; the `.sql` files double as documentation of the persistence contract. ent is graph-ORM overkill; sqlx keeps hand-written scan targets. Active (v1.31.1, 2026-04). | +| Migrations | **`pressly/goose`** (embedded via `go:embed`, run at startup) | golang-migrate/migrate | Library-first API (`goose.SetBaseFS` + `goose.Up`) matches "auto-run at startup" exactly; supports Go-function migrations for future data backfills; more actively maintained (v3.27.2, 2026-06 vs migrate 2025-11). migrate's strength (many DBs, CLI) is irrelevant for one embedded SQLite file. | +| WebAuthn | **`github.com/go-webauthn/webauthn`** | — | Mature (used by Teleport), active (v0.17.4, 2026-05). The `protocol` package exposes raw authenticator data + COSE keys, which we need for OpenSSH `webauthn-sk-*` key derivation; `SessionData` is a plain struct so our own challenge store works. Still v0.x — pin and review changelogs. | +| Web Push | **`SherClockHolmes/webpush-go`** | — (missing from #210's table) | De-facto standard VAPID/Web-Push library. Small, replaceable behind the `NotificationChannel` seam if it ever stalls. Re-verify maintenance at implementation time. | +| YAML | **`goccy/go-yaml`** | ~~`gopkg.in/yaml.v3`~~ | **Correction to #210:** `go-yaml/yaml` (yaml.v3) was archived in 2025 and is unmaintained. goccy/go-yaml is the actively maintained successor the ecosystem converged on. | +| Config validation | **hand-rolled validation in `internal/config`** | go-playground/validator | The schema is small and zod's refinements (cross-field rules, defaults, custom messages) don't map to struct tags anyway. Plain Go `Validate()` methods are more readable than tag DSLs, cost zero dependencies, and validator's maintainer bandwidth is openly thin. | +| Logging | **`log/slog`** (stdlib) | zap, zerolog | Settled 2026 consensus for new services. Structured, leveled, zero deps. | +| Testing | **stdlib `testing` + `stretchr/testify` v1** | — | testify v1 remains the standard (explicitly no v2). | +| In-process SSH server (tests only) | **`gliderlabs/ssh`** | raw `x/crypto/ssh` server | Dormant (last release 2024-12) but stable, test-only, and saves ~200 lines of channel/PTY boilerplate per scenario. Tailscale and Charm maintain derivatives we could vendor from if a CVE ever surfaces. Eyes open, acceptable for a dev dependency. | +| Hydra admin client | **hand-written on `net/http`** | ory/hydra-client-go | The Node `admin-client.ts` is a thin typed wrapper over ~12 admin endpoints; a generated Ory SDK drags in a huge OpenAPI client for no benefit. Port the thin wrapper. | +| Static frontend | **`go:embed` of the SvelteKit build** | filesystem serving | One self-contained binary — the deploy story #210 promises. A `-static-dir` flag keeps the dev override. | **Go toolchain:** latest stable at implementation start (Go 1.26 as of this writing). `agent-client/` (currently Go 1.24) is bumped independently. @@ -149,8 +149,9 @@ into `cmd/shellwatch`. go.mod # module github.com/rado0x54/shellwatch (repo root) cmd/shellwatch/main.go # flags/env → config → wire → run → ordered shutdown internal/ - api/ # oapi-codegen output (generated; committed) - httpserver/ # chi router, middleware stack, StrictServerInterface impl + api/ # oapi-codegen model types (generated; committed) + httpserver/ # chi router, middleware stack, route mounting + rest/ # hand-written REST handlers marshaling internal/api types ws/ # browser WS: hub, protocol types, message router mcp/ # MCP server, tools, per-session notifier (debounce) agentproxy/ # /agent-proxy: WS framing ↔ agent.ServeAgent @@ -271,25 +272,40 @@ This kills every module-level singleton, every `_reset*` test hook, and every free-running timer in the Node backend. The single-instance deployment constraint is now one greppable package. -### 5.5 REST surface (`internal/api`, `internal/httpserver`) - -- `internal/api` is generated by oapi-codegen v2 (strict-server, chi) from - `docs/api/openapi.yaml`; output is committed; `go generate ./...` + a CI - diff step is the Go-side `pnpm api:lint` — spec drift fails the build. -- `internal/httpserver` implements the generated `StrictServerInterface`, - translating to domain calls. Handler bodies are hand-written; shapes are - generated. Loosely-modeled bodies (WebAuthn ceremony envelopes, - `credential: {}`) stay `map[string]any` passthroughs by design. +### 5.5 REST surface (`internal/api`, `internal/rest`, `internal/httpserver`) + +- `internal/api` holds the model types generated by oapi-codegen v2 + (models-only) from `docs/api/openapi.yaml`; output is committed; + `go generate ./internal/api` + a CI diff step (`api-codegen` job) is the + Go-side `pnpm api:lint` — spec drift fails the build. An OpenAPI Overlay + (`docs/api/openapi-go-overlay.yaml`) binds `date-time` properties to plain + Go strings: `time.Time` marshals as RFC3339Nano while Node emits + `.toISOString()` millis, and the goldens fold timestamps to placeholders, + so that format drift would be invisible to the parity oracle. Handlers + format explicitly (`rest.isoMillis`) instead. +- `internal/rest` hand-writes the chi handlers and marshals the generated + model types wherever the spec models the body, so response-shape drift is a + compile error; goldens + the route-coverage test remain the value-level + oracle. Loosely-modeled bodies (WebAuthn ceremony envelopes, + `credential: {}`, the audit pages serialized from `internal/audit` domain + types, discriminated unions with custom marshaling) stay hand-shaped by + design. Strict-server mode was the original plan; it buys little while the + spec is frozen (goldens check values, not just shapes) and forces a routing + rewrite around the mixed mux — revisit post-cutover if the spec starts + evolving (re-enable `chi-server`/`strict-server` in + `docs/api/oapi-codegen.yaml`; the models are already in use, so the + remaining migration is handler signatures). - Middleware stack (chi): request-ID → slog access log → IP allowlist (path- - scoped, `/mcp`) → bearer gate (§5.9) → kin-openapi request validation → - handlers. `/ws`, `/mcp`, `/agent-proxy`, Hydra provider pages, and static - files mount beside the generated router on the same chi mux. -- **Error envelopes:** one internal error type - `apierr.E{Status int, Code string, Msg string}` renders today's three wire - shapes (`{error}`, `{error, code}` for step-up, `{error, error_description}` - for DCR) via per-surface renderers. Parity now; flipping everything to - `{error, code}` later (contract item F) is a renderer change, not a hunt - through handlers. + scoped, `/mcp`) → bearer gate (§5.9) → handlers. `/ws`, `/mcp`, + `/agent-proxy`, Hydra provider pages, and static files mount beside the + REST routes on the same chi mux. +- **Error envelopes:** today's three wire shapes render via per-surface + helpers — `rest.writeErr` for the standard `{error}`, the step-up gate's + `{error, code}` (`internal/webauthn/stepup.go`), and mediated DCR's + `{error, error_description}` (`internal/hydra/routes.go`). (The planned + unified `apierr.E` type was never needed; flipping everything to + `{error, code}` later — contract item F — is still a change to three + helpers, not a hunt through handlers.) ### 5.6 Persistence (`internal/store`) (W7–W9, W13) @@ -480,7 +496,7 @@ deliberate_ phase after cutover, changing spec + code + goldens together. | C — REST vs MCP endpoint-id ownership | Preserve both behaviors | | D — `terminal:close` vs `terminal:closed` redundancy | Preserve; revisit with the frontend after cutover | | E — three end-of-buffer vocabularies | Preserve (`reset` on WS, `hasMore` on MCP, bare tail on REST) | -| F — three error envelopes | Preserve on the wire; unified internally behind `apierr` (§5.5) so convergence is cheap later | +| F — three error envelopes | Preserve on the wire; each shape renders via one per-surface helper (§5.5) so convergence is cheap later | | G — 400 vs 409 state conflicts | Preserve per-route statuses (they're in the goldens) | | H — `source` typed as bare string | The generated Go type follows the spec; tightening to the enum is a spec change first | | I — duplicate discovery docs | Preserve both | diff --git a/internal/api/api.gen.go b/internal/api/api.gen.go index 2c0aa5c..faf3e31 100644 --- a/internal/api/api.gen.go +++ b/internal/api/api.gen.go @@ -4,17 +4,8 @@ package api import ( - "bytes" - "context" "encoding/json" - "errors" "fmt" - "io" - "net/http" - "time" - - "github.com/go-chi/chi/v5" - "github.com/oapi-codegen/runtime" ) const ( @@ -650,14 +641,14 @@ func (e GetHealth200JSONResponseBodyStatus) Valid() bool { // AuthSessionView defines model for AuthSessionView. type AuthSessionView struct { - AuthorizedAt *time.Time `json:"authorizedAt,omitempty"` - ClientId *string `json:"clientId,omitempty"` - ClientName *string `json:"clientName,omitempty"` - CreatedAt *time.Time `json:"createdAt,omitempty"` + AuthorizedAt *string `json:"authorizedAt"` + ClientId string `json:"clientId"` + ClientName string `json:"clientName"` + CreatedAt *string `json:"createdAt"` // Current True for the first-party web-UI client. - Current *bool `json:"current,omitempty"` - Scopes *[]string `json:"scopes,omitempty"` + Current bool `json:"current"` + Scopes []string `json:"scopes"` } // AuthorizationServerMetadata RFC 8414 authorization-server metadata, blended: issuer + auth/token/jwks/ revocation point at Hydra; registration_endpoint points at ShellWatch's mediated DCR (/api/hydra/register). @@ -759,8 +750,8 @@ type SessionLifecycleRow struct { ClientOs *string `json:"clientOs,omitempty"` ClientVersion *string `json:"clientVersion,omitempty"` CloseReason *string `json:"closeReason,omitempty"` - ClosedAt *time.Time `json:"closedAt,omitempty"` - CreatedAt *time.Time `json:"createdAt,omitempty"` + ClosedAt *string `json:"closedAt,omitempty"` + CreatedAt *string `json:"createdAt,omitempty"` DurationMs *int `json:"durationMs,omitempty"` EndpointId *string `json:"endpointId,omitempty"` McpClientName *string `json:"mcpClientName,omitempty"` @@ -791,7 +782,7 @@ type SigningRequestRow struct { ClientHostname *string `json:"clientHostname,omitempty"` ClientOs *string `json:"clientOs,omitempty"` ClientVersion *string `json:"clientVersion,omitempty"` - CreatedAt *time.Time `json:"createdAt,omitempty"` + CreatedAt *string `json:"createdAt,omitempty"` CredentialId *string `json:"credentialId,omitempty"` EndpointAddress *string `json:"endpointAddress,omitempty"` EndpointLabel *string `json:"endpointLabel,omitempty"` @@ -804,7 +795,7 @@ type SigningRequestRow struct { McpReason *string `json:"mcpReason,omitempty"` Outcome *SigningRequestRowOutcome `json:"outcome,omitempty"` PasskeyLabel *string `json:"passkeyLabel,omitempty"` - ResolvedAt *time.Time `json:"resolvedAt,omitempty"` + ResolvedAt *string `json:"resolvedAt,omitempty"` SessionId *string `json:"sessionId,omitempty"` Source *SigningRequestRowSource `json:"source,omitempty"` SourceIp *string `json:"sourceIp,omitempty"` @@ -820,8 +811,8 @@ type SigningRequestRowSource string // StatusCreated defines model for StatusCreated. type StatusCreated struct { - Id *string `json:"id,omitempty"` - Status *StatusCreatedStatus `json:"status,omitempty"` + Id string `json:"id"` + Status StatusCreatedStatus `json:"status"` } // StatusCreatedStatus defines model for StatusCreated.Status. @@ -829,7 +820,7 @@ type StatusCreatedStatus string // StatusDeleted defines model for StatusDeleted. type StatusDeleted struct { - Status *StatusDeletedStatus `json:"status,omitempty"` + Status StatusDeletedStatus `json:"status"` } // StatusDeletedStatus defines model for StatusDeleted.Status. @@ -837,7 +828,7 @@ type StatusDeletedStatus string // StatusUpdated defines model for StatusUpdated. type StatusUpdated struct { - Status *StatusUpdatedStatus `json:"status,omitempty"` + Status StatusUpdatedStatus `json:"status"` } // StatusUpdatedStatus defines model for StatusUpdated.Status. @@ -856,9 +847,9 @@ type StepUpErrorCode string type TerminalSession struct { AccountId string `json:"accountId"` CloseReason *string `json:"closeReason,omitempty"` - CreatedAt time.Time `json:"createdAt"` + CreatedAt string `json:"createdAt"` EndpointId string `json:"endpointId"` - LastActivityAt *time.Time `json:"lastActivityAt,omitempty"` + LastActivityAt string `json:"lastActivityAt"` McpClientName *string `json:"mcpClientName,omitempty"` McpClientVersion *string `json:"mcpClientVersion,omitempty"` McpReason *string `json:"mcpReason,omitempty"` @@ -927,10 +918,10 @@ type ResolveActionJSONBody struct { // ListAuditSessionsParams defines parameters for ListAuditSessions. type ListAuditSessionsParams struct { - EndpointId *string `form:"endpointId,omitempty" json:"endpointId,omitempty"` - From *time.Time `form:"from,omitempty" json:"from,omitempty"` - To *time.Time `form:"to,omitempty" json:"to,omitempty"` - Cursor *string `form:"cursor,omitempty" json:"cursor,omitempty"` + EndpointId *string `form:"endpointId,omitempty" json:"endpointId,omitempty"` + From *string `form:"from,omitempty" json:"from,omitempty"` + To *string `form:"to,omitempty" json:"to,omitempty"` + Cursor *string `form:"cursor,omitempty" json:"cursor,omitempty"` // Limit Page size. Clamped server-side (clampLimit): non-finite or ≤0 → 50; values above 500 → 500. Default 50, max 500. Limit *int `form:"limit,omitempty" json:"limit,omitempty"` @@ -940,8 +931,8 @@ type ListAuditSessionsParams struct { type ListAuditSigningsParams struct { Source *ListAuditSigningsParamsSource `form:"source,omitempty" json:"source,omitempty"` Outcome *ListAuditSigningsParamsOutcome `form:"outcome,omitempty" json:"outcome,omitempty"` - From *time.Time `form:"from,omitempty" json:"from,omitempty"` - To *time.Time `form:"to,omitempty" json:"to,omitempty"` + From *string `form:"from,omitempty" json:"from,omitempty"` + To *string `form:"to,omitempty" json:"to,omitempty"` Cursor *string `form:"cursor,omitempty" json:"cursor,omitempty"` // Limit Page size. Clamped server-side (clampLimit): non-finite or ≤0 → 50; values above 500 → 500. Default 50, max 500. @@ -1416,6070 +1407,3 @@ func (a WebAuthnRegistrationOptions) MarshalJSON() ([]byte, error) { } return json.Marshal(object) } - -// ServerInterface represents all server handlers. -type ServerInterface interface { - // Blended AS metadata (RFC 8414) - // (GET /.well-known/oauth-authorization-server) - GetAuthorizationServerMetadata(w http.ResponseWriter, r *http.Request) - // Protected-resource metadata — bare/default location (RFC 9728) - // (GET /.well-known/oauth-protected-resource) - GetProtectedResourceMetadata(w http.ResponseWriter, r *http.Request) - // Protected-resource metadata for /agent-proxy (only when agent proxy enabled) - // (GET /.well-known/oauth-protected-resource/agent-proxy) - GetProtectedResourceMetadataAgentProxy(w http.ResponseWriter, r *http.Request) - // Protected-resource metadata for /mcp (RFC 9728) - // (GET /.well-known/oauth-protected-resource/mcp) - GetProtectedResourceMetadataMcp(w http.ResponseWriter, r *http.Request) - // List all accounts (admin only) - // (GET /api/accounts) - ListAccounts(w http.ResponseWriter, r *http.Request) - // Export passkeys + endpoints as seed config (admin only) - // (GET /api/accounts/export-seed) - ExportSeedConfig(w http.ResponseWriter, r *http.Request) - // Hard-delete an account + cascade (admin only) - // (DELETE /api/accounts/{id}) - DeleteAccount(w http.ResponseWriter, r *http.Request, id string) - // Get a pending signing action - // (GET /api/actions/{actionId}) - GetAction(w http.ResponseWriter, r *http.Request, actionId string) - // Deny a signing action - // (POST /api/actions/{actionId}/deny) - DenyAction(w http.ResponseWriter, r *http.Request, actionId string) - // Resolve a signing action (WebAuthn signature or key-approve) - // (POST /api/actions/{actionId}/resolve) - ResolveAction(w http.ResponseWriter, r *http.Request, actionId string) - // Query session-lifecycle events - // (GET /api/audit/sessions) - ListAuditSessions(w http.ResponseWriter, r *http.Request, params ListAuditSessionsParams) - // Query signing-request audit - // (GET /api/audit/signings) - ListAuditSignings(w http.ResponseWriter, r *http.Request, params ListAuditSigningsParams) - // Get one signing-request record - // (GET /api/audit/signings/{id}) - GetAuditSigning(w http.ResponseWriter, r *http.Request, id string) - // Current account profile - // (GET /api/auth/me) - GetCurrentAccount(w http.ResponseWriter, r *http.Request) - // Update current account (name, demo visibility) - // (PUT /api/auth/me) - UpdateCurrentAccount(w http.ResponseWriter, r *http.Request) - // Whether any passkeys exist yet (first-run detection) - // (GET /api/auth/passkey-status) - GetPasskeyStatus(w http.ResponseWriter, r *http.Request) - // Verify passkey + create the account (anonymous, rate-limited) - // (POST /api/auth/register) - FinishAccountRegistration(w http.ResponseWriter, r *http.Request) - // Registration options for anonymous self-registration (rate-limited) - // (POST /api/auth/register/options) - StartAccountRegistration(w http.ResponseWriter, r *http.Request) - // List authorized OAuth clients (one row per client_id) - // (GET /api/auth/sessions) - ListAuthorizedClients(w http.ResponseWriter, r *http.Request) - // Sign out everywhere (step-up gated) - // (POST /api/auth/sessions/revoke-all) - RevokeAllAuthorizedClients(w http.ResponseWriter, r *http.Request, params RevokeAllAuthorizedClientsParams) - // Revoke one client's grant (step-up gated) - // (DELETE /api/auth/sessions/{clientId}) - RevokeAuthorizedClient(w http.ResponseWriter, r *http.Request, clientId string, params RevokeAuthorizedClientParams) - // List account endpoints (+ demo endpoints if enabled) - // (GET /api/endpoints) - ListEndpoints(w http.ResponseWriter, r *http.Request) - // Create endpoint (server generates the id) - // (POST /api/endpoints) - CreateEndpoint(w http.ResponseWriter, r *http.Request) - // Delete endpoint - // (DELETE /api/endpoints/{id}) - DeleteEndpoint(w http.ResponseWriter, r *http.Request, id string) - // Update endpoint (demo ids rejected) - // (PUT /api/endpoints/{id}) - UpdateEndpoint(w http.ResponseWriter, r *http.Request, id string) - // No-passkey consent grant (valid only after a fresh login in-flow) - // (POST /api/hydra/consent/approve) - ApproveHydraConsent(w http.ResponseWriter, r *http.Request) - // Passkey consent challenge - // (POST /api/hydra/consent/options) - StartHydraConsent(w http.ResponseWriter, r *http.Request) - // Verify consent assertion, accept Hydra consent request - // (POST /api/hydra/consent/verify) - FinishHydraConsent(w http.ResponseWriter, r *http.Request) - // Passkey login challenge (rate-limited) - // (POST /api/hydra/login/options) - StartHydraLogin(w http.ResponseWriter, r *http.Request) - // Verify login assertion, accept Hydra login request - // (POST /api/hydra/login/verify) - FinishHydraLogin(w http.ResponseWriter, r *http.Request) - // Mediated Dynamic Client Registration (RFC 7591) - // (POST /api/hydra/register) - RegisterOauthClient(w http.ResponseWriter, r *http.Request) - // List file-based SSH keys (admin sees keys; non-admin sees empty) - // (GET /api/keys) - ListSshKeys(w http.ResponseWriter, r *http.Request) - // Verify + enroll a passkey via invite (anonymous) - // (POST /api/passkey-invite/register) - FinishInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) - // Registration options for invite enrollment (anonymous) - // (POST /api/passkey-invite/register/options) - StartInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) - // Look up an invite by token (anonymous) - // (GET /api/passkey-invite/{token}) - GetPasskeyInviteByToken(w http.ResponseWriter, r *http.Request, token string) - // Unregister a Web Push subscription - // (DELETE /api/push/subscribe) - DeletePushSubscription(w http.ResponseWriter, r *http.Request) - // Register a Web Push subscription - // (POST /api/push/subscribe) - CreatePushSubscription(w http.ResponseWriter, r *http.Request) - // List the account's terminal sessions - // (GET /api/sessions) - ListSessions(w http.ResponseWriter, r *http.Request) - // Open an SSH session to an endpoint - // (POST /api/sessions) - CreateSession(w http.ResponseWriter, r *http.Request) - // Close a session - // (DELETE /api/sessions/{sessionId}) - CloseSession(w http.ResponseWriter, r *http.Request, sessionId string) - // Read the tail of a session's output buffer - // (GET /api/sessions/{sessionId}/tail) - GetSessionTail(w http.ResponseWriter, r *http.Request, sessionId string, params GetSessionTailParams) - // Build info (curl-able without auth) - // (GET /api/version) - GetVersion(w http.ResponseWriter, r *http.Request) - // List the account's passkeys - // (GET /api/webauthn/credentials) - ListPasskeys(w http.ResponseWriter, r *http.Request) - // Confirm a pending invite passkey (step-up gated — confirm_passkey) - // (POST /api/webauthn/credentials/{id}/confirm) - ConfirmPasskey(w http.ResponseWriter, r *http.Request, id string, params ConfirmPasskeyParams) - // Rename a passkey (no step-up — cosmetic) - // (PATCH /api/webauthn/credentials/{id}/label) - UpdatePasskeyLabel(w http.ResponseWriter, r *http.Request, id string) - // Revoke a passkey (step-up gated — revoke_passkey) - // (POST /api/webauthn/credentials/{id}/revoke) - RevokePasskey(w http.ResponseWriter, r *http.Request, id string, params RevokePasskeyParams) - // Get the active passkey invite (if any) - // (GET /api/webauthn/invite) - GetPasskeyInvite(w http.ResponseWriter, r *http.Request) - // Mint a passkey invite - // (POST /api/webauthn/invite) - CreatePasskeyInvite(w http.ResponseWriter, r *http.Request) - // Verify + store a new passkey (step-up gated — register_passkey) - // (POST /api/webauthn/register) - FinishPasskeyRegistration(w http.ResponseWriter, r *http.Request, params FinishPasskeyRegistrationParams) - // Registration options for an in-account passkey add - // (POST /api/webauthn/register/options) - StartPasskeyRegistration(w http.ResponseWriter, r *http.Request) - // Authentication options for a step-up ceremony - // (POST /api/webauthn/stepup/options) - StartStepUp(w http.ResponseWriter, r *http.Request) - // Verify a step-up assertion, mint a single-use step-up token - // (POST /api/webauthn/stepup/verify) - FinishStepUp(w http.ResponseWriter, r *http.Request) - // Browser bootstrap config (JS, not JSON) - // (GET /config.js) - GetConfigScript(w http.ResponseWriter, r *http.Request) - // Liveness probe - // (GET /health) - GetHealth(w http.ResponseWriter, r *http.Request) -} - -// Unimplemented server implementation that returns http.StatusNotImplemented for each endpoint. - -type Unimplemented struct{} - -// Blended AS metadata (RFC 8414) -// (GET /.well-known/oauth-authorization-server) -func (_ Unimplemented) GetAuthorizationServerMetadata(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Protected-resource metadata — bare/default location (RFC 9728) -// (GET /.well-known/oauth-protected-resource) -func (_ Unimplemented) GetProtectedResourceMetadata(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Protected-resource metadata for /agent-proxy (only when agent proxy enabled) -// (GET /.well-known/oauth-protected-resource/agent-proxy) -func (_ Unimplemented) GetProtectedResourceMetadataAgentProxy(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Protected-resource metadata for /mcp (RFC 9728) -// (GET /.well-known/oauth-protected-resource/mcp) -func (_ Unimplemented) GetProtectedResourceMetadataMcp(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// List all accounts (admin only) -// (GET /api/accounts) -func (_ Unimplemented) ListAccounts(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Export passkeys + endpoints as seed config (admin only) -// (GET /api/accounts/export-seed) -func (_ Unimplemented) ExportSeedConfig(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Hard-delete an account + cascade (admin only) -// (DELETE /api/accounts/{id}) -func (_ Unimplemented) DeleteAccount(w http.ResponseWriter, r *http.Request, id string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Get a pending signing action -// (GET /api/actions/{actionId}) -func (_ Unimplemented) GetAction(w http.ResponseWriter, r *http.Request, actionId string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Deny a signing action -// (POST /api/actions/{actionId}/deny) -func (_ Unimplemented) DenyAction(w http.ResponseWriter, r *http.Request, actionId string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Resolve a signing action (WebAuthn signature or key-approve) -// (POST /api/actions/{actionId}/resolve) -func (_ Unimplemented) ResolveAction(w http.ResponseWriter, r *http.Request, actionId string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Query session-lifecycle events -// (GET /api/audit/sessions) -func (_ Unimplemented) ListAuditSessions(w http.ResponseWriter, r *http.Request, params ListAuditSessionsParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Query signing-request audit -// (GET /api/audit/signings) -func (_ Unimplemented) ListAuditSignings(w http.ResponseWriter, r *http.Request, params ListAuditSigningsParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Get one signing-request record -// (GET /api/audit/signings/{id}) -func (_ Unimplemented) GetAuditSigning(w http.ResponseWriter, r *http.Request, id string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Current account profile -// (GET /api/auth/me) -func (_ Unimplemented) GetCurrentAccount(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Update current account (name, demo visibility) -// (PUT /api/auth/me) -func (_ Unimplemented) UpdateCurrentAccount(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Whether any passkeys exist yet (first-run detection) -// (GET /api/auth/passkey-status) -func (_ Unimplemented) GetPasskeyStatus(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Verify passkey + create the account (anonymous, rate-limited) -// (POST /api/auth/register) -func (_ Unimplemented) FinishAccountRegistration(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Registration options for anonymous self-registration (rate-limited) -// (POST /api/auth/register/options) -func (_ Unimplemented) StartAccountRegistration(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// List authorized OAuth clients (one row per client_id) -// (GET /api/auth/sessions) -func (_ Unimplemented) ListAuthorizedClients(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Sign out everywhere (step-up gated) -// (POST /api/auth/sessions/revoke-all) -func (_ Unimplemented) RevokeAllAuthorizedClients(w http.ResponseWriter, r *http.Request, params RevokeAllAuthorizedClientsParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Revoke one client's grant (step-up gated) -// (DELETE /api/auth/sessions/{clientId}) -func (_ Unimplemented) RevokeAuthorizedClient(w http.ResponseWriter, r *http.Request, clientId string, params RevokeAuthorizedClientParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// List account endpoints (+ demo endpoints if enabled) -// (GET /api/endpoints) -func (_ Unimplemented) ListEndpoints(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Create endpoint (server generates the id) -// (POST /api/endpoints) -func (_ Unimplemented) CreateEndpoint(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Delete endpoint -// (DELETE /api/endpoints/{id}) -func (_ Unimplemented) DeleteEndpoint(w http.ResponseWriter, r *http.Request, id string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Update endpoint (demo ids rejected) -// (PUT /api/endpoints/{id}) -func (_ Unimplemented) UpdateEndpoint(w http.ResponseWriter, r *http.Request, id string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// No-passkey consent grant (valid only after a fresh login in-flow) -// (POST /api/hydra/consent/approve) -func (_ Unimplemented) ApproveHydraConsent(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Passkey consent challenge -// (POST /api/hydra/consent/options) -func (_ Unimplemented) StartHydraConsent(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Verify consent assertion, accept Hydra consent request -// (POST /api/hydra/consent/verify) -func (_ Unimplemented) FinishHydraConsent(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Passkey login challenge (rate-limited) -// (POST /api/hydra/login/options) -func (_ Unimplemented) StartHydraLogin(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Verify login assertion, accept Hydra login request -// (POST /api/hydra/login/verify) -func (_ Unimplemented) FinishHydraLogin(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Mediated Dynamic Client Registration (RFC 7591) -// (POST /api/hydra/register) -func (_ Unimplemented) RegisterOauthClient(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// List file-based SSH keys (admin sees keys; non-admin sees empty) -// (GET /api/keys) -func (_ Unimplemented) ListSshKeys(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Verify + enroll a passkey via invite (anonymous) -// (POST /api/passkey-invite/register) -func (_ Unimplemented) FinishInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Registration options for invite enrollment (anonymous) -// (POST /api/passkey-invite/register/options) -func (_ Unimplemented) StartInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Look up an invite by token (anonymous) -// (GET /api/passkey-invite/{token}) -func (_ Unimplemented) GetPasskeyInviteByToken(w http.ResponseWriter, r *http.Request, token string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Unregister a Web Push subscription -// (DELETE /api/push/subscribe) -func (_ Unimplemented) DeletePushSubscription(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Register a Web Push subscription -// (POST /api/push/subscribe) -func (_ Unimplemented) CreatePushSubscription(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// List the account's terminal sessions -// (GET /api/sessions) -func (_ Unimplemented) ListSessions(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Open an SSH session to an endpoint -// (POST /api/sessions) -func (_ Unimplemented) CreateSession(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Close a session -// (DELETE /api/sessions/{sessionId}) -func (_ Unimplemented) CloseSession(w http.ResponseWriter, r *http.Request, sessionId string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Read the tail of a session's output buffer -// (GET /api/sessions/{sessionId}/tail) -func (_ Unimplemented) GetSessionTail(w http.ResponseWriter, r *http.Request, sessionId string, params GetSessionTailParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Build info (curl-able without auth) -// (GET /api/version) -func (_ Unimplemented) GetVersion(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// List the account's passkeys -// (GET /api/webauthn/credentials) -func (_ Unimplemented) ListPasskeys(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Confirm a pending invite passkey (step-up gated — confirm_passkey) -// (POST /api/webauthn/credentials/{id}/confirm) -func (_ Unimplemented) ConfirmPasskey(w http.ResponseWriter, r *http.Request, id string, params ConfirmPasskeyParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Rename a passkey (no step-up — cosmetic) -// (PATCH /api/webauthn/credentials/{id}/label) -func (_ Unimplemented) UpdatePasskeyLabel(w http.ResponseWriter, r *http.Request, id string) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Revoke a passkey (step-up gated — revoke_passkey) -// (POST /api/webauthn/credentials/{id}/revoke) -func (_ Unimplemented) RevokePasskey(w http.ResponseWriter, r *http.Request, id string, params RevokePasskeyParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Get the active passkey invite (if any) -// (GET /api/webauthn/invite) -func (_ Unimplemented) GetPasskeyInvite(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Mint a passkey invite -// (POST /api/webauthn/invite) -func (_ Unimplemented) CreatePasskeyInvite(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Verify + store a new passkey (step-up gated — register_passkey) -// (POST /api/webauthn/register) -func (_ Unimplemented) FinishPasskeyRegistration(w http.ResponseWriter, r *http.Request, params FinishPasskeyRegistrationParams) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Registration options for an in-account passkey add -// (POST /api/webauthn/register/options) -func (_ Unimplemented) StartPasskeyRegistration(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Authentication options for a step-up ceremony -// (POST /api/webauthn/stepup/options) -func (_ Unimplemented) StartStepUp(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Verify a step-up assertion, mint a single-use step-up token -// (POST /api/webauthn/stepup/verify) -func (_ Unimplemented) FinishStepUp(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Browser bootstrap config (JS, not JSON) -// (GET /config.js) -func (_ Unimplemented) GetConfigScript(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// Liveness probe -// (GET /health) -func (_ Unimplemented) GetHealth(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(http.StatusNotImplemented) -} - -// ServerInterfaceWrapper converts contexts to parameters. -type ServerInterfaceWrapper struct { - Handler ServerInterface - HandlerMiddlewares []MiddlewareFunc - ErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error) -} - -type MiddlewareFunc func(http.Handler) http.Handler - -// GetAuthorizationServerMetadata operation middleware -func (siw *ServerInterfaceWrapper) GetAuthorizationServerMetadata(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetAuthorizationServerMetadata(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetProtectedResourceMetadata operation middleware -func (siw *ServerInterfaceWrapper) GetProtectedResourceMetadata(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetProtectedResourceMetadata(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetProtectedResourceMetadataAgentProxy operation middleware -func (siw *ServerInterfaceWrapper) GetProtectedResourceMetadataAgentProxy(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetProtectedResourceMetadataAgentProxy(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetProtectedResourceMetadataMcp operation middleware -func (siw *ServerInterfaceWrapper) GetProtectedResourceMetadataMcp(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetProtectedResourceMetadataMcp(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListAccounts operation middleware -func (siw *ServerInterfaceWrapper) ListAccounts(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListAccounts(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ExportSeedConfig operation middleware -func (siw *ServerInterfaceWrapper) ExportSeedConfig(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ExportSeedConfig(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// DeleteAccount operation middleware -func (siw *ServerInterfaceWrapper) DeleteAccount(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.DeleteAccount(w, r, id) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetAction operation middleware -func (siw *ServerInterfaceWrapper) GetAction(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "actionId" ------------- - var actionId string - - err = runtime.BindStyledParameterWithOptions("simple", "actionId", chi.URLParam(r, "actionId"), &actionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "actionId", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetAction(w, r, actionId) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// DenyAction operation middleware -func (siw *ServerInterfaceWrapper) DenyAction(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "actionId" ------------- - var actionId string - - err = runtime.BindStyledParameterWithOptions("simple", "actionId", chi.URLParam(r, "actionId"), &actionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "actionId", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.DenyAction(w, r, actionId) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ResolveAction operation middleware -func (siw *ServerInterfaceWrapper) ResolveAction(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "actionId" ------------- - var actionId string - - err = runtime.BindStyledParameterWithOptions("simple", "actionId", chi.URLParam(r, "actionId"), &actionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "actionId", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ResolveAction(w, r, actionId) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListAuditSessions operation middleware -func (siw *ServerInterfaceWrapper) ListAuditSessions(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params ListAuditSessionsParams - - // ------------- Optional query parameter "endpointId" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "endpointId", r.URL.Query(), ¶ms.EndpointId, runtime.BindQueryParameterOptions{Type: "string", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "endpointId"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "endpointId", Err: err}) - } - return - } - - // ------------- Optional query parameter "from" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "from", r.URL.Query(), ¶ms.From, runtime.BindQueryParameterOptions{Type: "string", Format: "date-time"}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "from"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "from", Err: err}) - } - return - } - - // ------------- Optional query parameter "to" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "to", r.URL.Query(), ¶ms.To, runtime.BindQueryParameterOptions{Type: "string", Format: "date-time"}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "to"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "to", Err: err}) - } - return - } - - // ------------- Optional query parameter "cursor" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "cursor", r.URL.Query(), ¶ms.Cursor, runtime.BindQueryParameterOptions{Type: "string", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "cursor"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "cursor", Err: err}) - } - return - } - - // ------------- Optional query parameter "limit" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "limit", r.URL.Query(), ¶ms.Limit, runtime.BindQueryParameterOptions{Type: "integer", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "limit"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) - } - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListAuditSessions(w, r, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListAuditSignings operation middleware -func (siw *ServerInterfaceWrapper) ListAuditSignings(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params ListAuditSigningsParams - - // ------------- Optional query parameter "source" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "source", r.URL.Query(), ¶ms.Source, runtime.BindQueryParameterOptions{Type: "string", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "source"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "source", Err: err}) - } - return - } - - // ------------- Optional query parameter "outcome" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "outcome", r.URL.Query(), ¶ms.Outcome, runtime.BindQueryParameterOptions{Type: "string", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "outcome"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "outcome", Err: err}) - } - return - } - - // ------------- Optional query parameter "from" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "from", r.URL.Query(), ¶ms.From, runtime.BindQueryParameterOptions{Type: "string", Format: "date-time"}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "from"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "from", Err: err}) - } - return - } - - // ------------- Optional query parameter "to" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "to", r.URL.Query(), ¶ms.To, runtime.BindQueryParameterOptions{Type: "string", Format: "date-time"}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "to"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "to", Err: err}) - } - return - } - - // ------------- Optional query parameter "cursor" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "cursor", r.URL.Query(), ¶ms.Cursor, runtime.BindQueryParameterOptions{Type: "string", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "cursor"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "cursor", Err: err}) - } - return - } - - // ------------- Optional query parameter "limit" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "limit", r.URL.Query(), ¶ms.Limit, runtime.BindQueryParameterOptions{Type: "integer", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "limit"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) - } - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListAuditSignings(w, r, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetAuditSigning operation middleware -func (siw *ServerInterfaceWrapper) GetAuditSigning(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetAuditSigning(w, r, id) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetCurrentAccount operation middleware -func (siw *ServerInterfaceWrapper) GetCurrentAccount(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetCurrentAccount(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// UpdateCurrentAccount operation middleware -func (siw *ServerInterfaceWrapper) UpdateCurrentAccount(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.UpdateCurrentAccount(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetPasskeyStatus operation middleware -func (siw *ServerInterfaceWrapper) GetPasskeyStatus(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetPasskeyStatus(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// FinishAccountRegistration operation middleware -func (siw *ServerInterfaceWrapper) FinishAccountRegistration(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.FinishAccountRegistration(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// StartAccountRegistration operation middleware -func (siw *ServerInterfaceWrapper) StartAccountRegistration(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.StartAccountRegistration(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListAuthorizedClients operation middleware -func (siw *ServerInterfaceWrapper) ListAuthorizedClients(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListAuthorizedClients(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// RevokeAllAuthorizedClients operation middleware -func (siw *ServerInterfaceWrapper) RevokeAllAuthorizedClients(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params RevokeAllAuthorizedClientsParams - - headers := r.Header - - // ------------- Required header parameter "X-ShellWatch-StepUp-Token" ------------- - if valueList, found := headers[http.CanonicalHeaderKey("X-ShellWatch-StepUp-Token")]; found { - var XShellWatchStepUpToken StepUpTokenHeader - n := len(valueList) - if n != 1 { - siw.ErrorHandlerFunc(w, r, &TooManyValuesForParamError{ParamName: "X-ShellWatch-StepUp-Token", Count: n}) - return - } - - err = runtime.BindStyledParameterWithOptions("simple", "X-ShellWatch-StepUp-Token", valueList[0], &XShellWatchStepUpToken, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - params.XShellWatchStepUpToken = XShellWatchStepUpToken - - } else { - err := fmt.Errorf("Header parameter X-ShellWatch-StepUp-Token is required, but not found") - siw.ErrorHandlerFunc(w, r, &RequiredHeaderError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.RevokeAllAuthorizedClients(w, r, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// RevokeAuthorizedClient operation middleware -func (siw *ServerInterfaceWrapper) RevokeAuthorizedClient(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "clientId" ------------- - var clientId string - - err = runtime.BindStyledParameterWithOptions("simple", "clientId", chi.URLParam(r, "clientId"), &clientId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "clientId", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params RevokeAuthorizedClientParams - - headers := r.Header - - // ------------- Required header parameter "X-ShellWatch-StepUp-Token" ------------- - if valueList, found := headers[http.CanonicalHeaderKey("X-ShellWatch-StepUp-Token")]; found { - var XShellWatchStepUpToken StepUpTokenHeader - n := len(valueList) - if n != 1 { - siw.ErrorHandlerFunc(w, r, &TooManyValuesForParamError{ParamName: "X-ShellWatch-StepUp-Token", Count: n}) - return - } - - err = runtime.BindStyledParameterWithOptions("simple", "X-ShellWatch-StepUp-Token", valueList[0], &XShellWatchStepUpToken, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - params.XShellWatchStepUpToken = XShellWatchStepUpToken - - } else { - err := fmt.Errorf("Header parameter X-ShellWatch-StepUp-Token is required, but not found") - siw.ErrorHandlerFunc(w, r, &RequiredHeaderError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.RevokeAuthorizedClient(w, r, clientId, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListEndpoints operation middleware -func (siw *ServerInterfaceWrapper) ListEndpoints(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListEndpoints(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// CreateEndpoint operation middleware -func (siw *ServerInterfaceWrapper) CreateEndpoint(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CreateEndpoint(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// DeleteEndpoint operation middleware -func (siw *ServerInterfaceWrapper) DeleteEndpoint(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.DeleteEndpoint(w, r, id) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// UpdateEndpoint operation middleware -func (siw *ServerInterfaceWrapper) UpdateEndpoint(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.UpdateEndpoint(w, r, id) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ApproveHydraConsent operation middleware -func (siw *ServerInterfaceWrapper) ApproveHydraConsent(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ApproveHydraConsent(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// StartHydraConsent operation middleware -func (siw *ServerInterfaceWrapper) StartHydraConsent(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.StartHydraConsent(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// FinishHydraConsent operation middleware -func (siw *ServerInterfaceWrapper) FinishHydraConsent(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.FinishHydraConsent(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// StartHydraLogin operation middleware -func (siw *ServerInterfaceWrapper) StartHydraLogin(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.StartHydraLogin(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// FinishHydraLogin operation middleware -func (siw *ServerInterfaceWrapper) FinishHydraLogin(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.FinishHydraLogin(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// RegisterOauthClient operation middleware -func (siw *ServerInterfaceWrapper) RegisterOauthClient(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.RegisterOauthClient(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListSshKeys operation middleware -func (siw *ServerInterfaceWrapper) ListSshKeys(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListSshKeys(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// FinishInvitePasskeyRegistration operation middleware -func (siw *ServerInterfaceWrapper) FinishInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.FinishInvitePasskeyRegistration(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// StartInvitePasskeyRegistration operation middleware -func (siw *ServerInterfaceWrapper) StartInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.StartInvitePasskeyRegistration(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetPasskeyInviteByToken operation middleware -func (siw *ServerInterfaceWrapper) GetPasskeyInviteByToken(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "token" ------------- - var token string - - err = runtime.BindStyledParameterWithOptions("simple", "token", chi.URLParam(r, "token"), &token, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "token", Err: err}) - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetPasskeyInviteByToken(w, r, token) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// DeletePushSubscription operation middleware -func (siw *ServerInterfaceWrapper) DeletePushSubscription(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.DeletePushSubscription(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// CreatePushSubscription operation middleware -func (siw *ServerInterfaceWrapper) CreatePushSubscription(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CreatePushSubscription(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListSessions operation middleware -func (siw *ServerInterfaceWrapper) ListSessions(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListSessions(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// CreateSession operation middleware -func (siw *ServerInterfaceWrapper) CreateSession(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CreateSession(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// CloseSession operation middleware -func (siw *ServerInterfaceWrapper) CloseSession(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "sessionId" ------------- - var sessionId string - - err = runtime.BindStyledParameterWithOptions("simple", "sessionId", chi.URLParam(r, "sessionId"), &sessionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "sessionId", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CloseSession(w, r, sessionId) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetSessionTail operation middleware -func (siw *ServerInterfaceWrapper) GetSessionTail(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "sessionId" ------------- - var sessionId string - - err = runtime.BindStyledParameterWithOptions("simple", "sessionId", chi.URLParam(r, "sessionId"), &sessionId, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "sessionId", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params GetSessionTailParams - - // ------------- Optional query parameter "limit" ------------- - - err = runtime.BindQueryParameterWithOptions("form", true, false, "limit", r.URL.Query(), ¶ms.Limit, runtime.BindQueryParameterOptions{Type: "integer", Format: ""}) - if err != nil { - var requiredError *runtime.RequiredParameterError - if errors.As(err, &requiredError) { - siw.ErrorHandlerFunc(w, r, &RequiredParamError{ParamName: "limit"}) - } else { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "limit", Err: err}) - } - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetSessionTail(w, r, sessionId, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetVersion operation middleware -func (siw *ServerInterfaceWrapper) GetVersion(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetVersion(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ListPasskeys operation middleware -func (siw *ServerInterfaceWrapper) ListPasskeys(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ListPasskeys(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// ConfirmPasskey operation middleware -func (siw *ServerInterfaceWrapper) ConfirmPasskey(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params ConfirmPasskeyParams - - headers := r.Header - - // ------------- Required header parameter "X-ShellWatch-StepUp-Token" ------------- - if valueList, found := headers[http.CanonicalHeaderKey("X-ShellWatch-StepUp-Token")]; found { - var XShellWatchStepUpToken StepUpTokenHeader - n := len(valueList) - if n != 1 { - siw.ErrorHandlerFunc(w, r, &TooManyValuesForParamError{ParamName: "X-ShellWatch-StepUp-Token", Count: n}) - return - } - - err = runtime.BindStyledParameterWithOptions("simple", "X-ShellWatch-StepUp-Token", valueList[0], &XShellWatchStepUpToken, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - params.XShellWatchStepUpToken = XShellWatchStepUpToken - - } else { - err := fmt.Errorf("Header parameter X-ShellWatch-StepUp-Token is required, but not found") - siw.ErrorHandlerFunc(w, r, &RequiredHeaderError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.ConfirmPasskey(w, r, id, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// UpdatePasskeyLabel operation middleware -func (siw *ServerInterfaceWrapper) UpdatePasskeyLabel(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.UpdatePasskeyLabel(w, r, id) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// RevokePasskey operation middleware -func (siw *ServerInterfaceWrapper) RevokePasskey(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - // ------------- Path parameter "id" ------------- - var id string - - err = runtime.BindStyledParameterWithOptions("simple", "id", chi.URLParam(r, "id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "id", Err: err}) - return - } - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params RevokePasskeyParams - - headers := r.Header - - // ------------- Required header parameter "X-ShellWatch-StepUp-Token" ------------- - if valueList, found := headers[http.CanonicalHeaderKey("X-ShellWatch-StepUp-Token")]; found { - var XShellWatchStepUpToken StepUpTokenHeader - n := len(valueList) - if n != 1 { - siw.ErrorHandlerFunc(w, r, &TooManyValuesForParamError{ParamName: "X-ShellWatch-StepUp-Token", Count: n}) - return - } - - err = runtime.BindStyledParameterWithOptions("simple", "X-ShellWatch-StepUp-Token", valueList[0], &XShellWatchStepUpToken, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - params.XShellWatchStepUpToken = XShellWatchStepUpToken - - } else { - err := fmt.Errorf("Header parameter X-ShellWatch-StepUp-Token is required, but not found") - siw.ErrorHandlerFunc(w, r, &RequiredHeaderError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.RevokePasskey(w, r, id, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetPasskeyInvite operation middleware -func (siw *ServerInterfaceWrapper) GetPasskeyInvite(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetPasskeyInvite(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// CreatePasskeyInvite operation middleware -func (siw *ServerInterfaceWrapper) CreatePasskeyInvite(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.CreatePasskeyInvite(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// FinishPasskeyRegistration operation middleware -func (siw *ServerInterfaceWrapper) FinishPasskeyRegistration(w http.ResponseWriter, r *http.Request) { - - var err error - _ = err - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - // Parameter object where we will unmarshal all parameters from the context - var params FinishPasskeyRegistrationParams - - headers := r.Header - - // ------------- Required header parameter "X-ShellWatch-StepUp-Token" ------------- - if valueList, found := headers[http.CanonicalHeaderKey("X-ShellWatch-StepUp-Token")]; found { - var XShellWatchStepUpToken StepUpTokenHeader - n := len(valueList) - if n != 1 { - siw.ErrorHandlerFunc(w, r, &TooManyValuesForParamError{ParamName: "X-ShellWatch-StepUp-Token", Count: n}) - return - } - - err = runtime.BindStyledParameterWithOptions("simple", "X-ShellWatch-StepUp-Token", valueList[0], &XShellWatchStepUpToken, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationHeader, Explode: false, Required: true, Type: "string", Format: ""}) - if err != nil { - siw.ErrorHandlerFunc(w, r, &InvalidParamFormatError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - params.XShellWatchStepUpToken = XShellWatchStepUpToken - - } else { - err := fmt.Errorf("Header parameter X-ShellWatch-StepUp-Token is required, but not found") - siw.ErrorHandlerFunc(w, r, &RequiredHeaderError{ParamName: "X-ShellWatch-StepUp-Token", Err: err}) - return - } - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.FinishPasskeyRegistration(w, r, params) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// StartPasskeyRegistration operation middleware -func (siw *ServerInterfaceWrapper) StartPasskeyRegistration(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.StartPasskeyRegistration(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// StartStepUp operation middleware -func (siw *ServerInterfaceWrapper) StartStepUp(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.StartStepUp(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// FinishStepUp operation middleware -func (siw *ServerInterfaceWrapper) FinishStepUp(w http.ResponseWriter, r *http.Request) { - - ctx := r.Context() - - ctx = context.WithValue(ctx, BearerUiScopes, []string{}) - - r = r.WithContext(ctx) - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.FinishStepUp(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetConfigScript operation middleware -func (siw *ServerInterfaceWrapper) GetConfigScript(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetConfigScript(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -// GetHealth operation middleware -func (siw *ServerInterfaceWrapper) GetHealth(w http.ResponseWriter, r *http.Request) { - - handler := http.Handler(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - siw.Handler.GetHealth(w, r) - })) - - for _, middleware := range siw.HandlerMiddlewares { - handler = middleware(handler) - } - - handler.ServeHTTP(w, r) -} - -type UnescapedCookieParamError struct { - ParamName string - Err error -} - -func (e *UnescapedCookieParamError) Error() string { - return fmt.Sprintf("error unescaping cookie parameter '%s'", e.ParamName) -} - -func (e *UnescapedCookieParamError) Unwrap() error { - return e.Err -} - -type UnmarshalingParamError struct { - ParamName string - Err error -} - -func (e *UnmarshalingParamError) Error() string { - return fmt.Sprintf("Error unmarshaling parameter %s as JSON: %s", e.ParamName, e.Err.Error()) -} - -func (e *UnmarshalingParamError) Unwrap() error { - return e.Err -} - -type RequiredParamError struct { - ParamName string -} - -func (e *RequiredParamError) Error() string { - return fmt.Sprintf("Query argument %s is required, but not found", e.ParamName) -} - -type RequiredHeaderError struct { - ParamName string - Err error -} - -func (e *RequiredHeaderError) Error() string { - return fmt.Sprintf("Header parameter %s is required, but not found", e.ParamName) -} - -func (e *RequiredHeaderError) Unwrap() error { - return e.Err -} - -type InvalidParamFormatError struct { - ParamName string - Err error -} - -func (e *InvalidParamFormatError) Error() string { - return fmt.Sprintf("Invalid format for parameter %s: %s", e.ParamName, e.Err.Error()) -} - -func (e *InvalidParamFormatError) Unwrap() error { - return e.Err -} - -type TooManyValuesForParamError struct { - ParamName string - Count int -} - -func (e *TooManyValuesForParamError) Error() string { - return fmt.Sprintf("Expected one value for %s, got %d", e.ParamName, e.Count) -} - -// Handler creates http.Handler with routing matching OpenAPI spec. -func Handler(si ServerInterface) http.Handler { - return HandlerWithOptions(si, ChiServerOptions{}) -} - -type ChiServerOptions struct { - BaseURL string - BaseRouter chi.Router - Middlewares []MiddlewareFunc - ErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error) -} - -// HandlerFromMux creates http.Handler with routing matching OpenAPI spec based on the provided mux. -func HandlerFromMux(si ServerInterface, r chi.Router) http.Handler { - return HandlerWithOptions(si, ChiServerOptions{ - BaseRouter: r, - }) -} - -func HandlerFromMuxWithBaseURL(si ServerInterface, r chi.Router, baseURL string) http.Handler { - return HandlerWithOptions(si, ChiServerOptions{ - BaseURL: baseURL, - BaseRouter: r, - }) -} - -// HandlerWithOptions creates http.Handler with additional options -func HandlerWithOptions(si ServerInterface, options ChiServerOptions) http.Handler { - r := options.BaseRouter - - if r == nil { - r = chi.NewRouter() - } - if options.ErrorHandlerFunc == nil { - options.ErrorHandlerFunc = func(w http.ResponseWriter, r *http.Request, err error) { - http.Error(w, err.Error(), http.StatusBadRequest) - } - } - wrapper := ServerInterfaceWrapper{ - Handler: si, - HandlerMiddlewares: options.Middlewares, - ErrorHandlerFunc: options.ErrorHandlerFunc, - } - - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/.well-known/oauth-authorization-server", wrapper.GetAuthorizationServerMetadata) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/.well-known/oauth-protected-resource", wrapper.GetProtectedResourceMetadata) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/.well-known/oauth-protected-resource/agent-proxy", wrapper.GetProtectedResourceMetadataAgentProxy) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/.well-known/oauth-protected-resource/mcp", wrapper.GetProtectedResourceMetadataMcp) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/accounts", wrapper.ListAccounts) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/accounts/export-seed", wrapper.ExportSeedConfig) - }) - r.Group(func(r chi.Router) { - r.Delete(options.BaseURL+"/api/accounts/{id}", wrapper.DeleteAccount) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/actions/{actionId}", wrapper.GetAction) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/actions/{actionId}/deny", wrapper.DenyAction) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/actions/{actionId}/resolve", wrapper.ResolveAction) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/audit/sessions", wrapper.ListAuditSessions) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/audit/signings", wrapper.ListAuditSignings) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/audit/signings/{id}", wrapper.GetAuditSigning) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/auth/me", wrapper.GetCurrentAccount) - }) - r.Group(func(r chi.Router) { - r.Put(options.BaseURL+"/api/auth/me", wrapper.UpdateCurrentAccount) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/auth/passkey-status", wrapper.GetPasskeyStatus) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/auth/register", wrapper.FinishAccountRegistration) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/auth/register/options", wrapper.StartAccountRegistration) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/auth/sessions", wrapper.ListAuthorizedClients) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/auth/sessions/revoke-all", wrapper.RevokeAllAuthorizedClients) - }) - r.Group(func(r chi.Router) { - r.Delete(options.BaseURL+"/api/auth/sessions/{clientId}", wrapper.RevokeAuthorizedClient) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/endpoints", wrapper.ListEndpoints) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/endpoints", wrapper.CreateEndpoint) - }) - r.Group(func(r chi.Router) { - r.Delete(options.BaseURL+"/api/endpoints/{id}", wrapper.DeleteEndpoint) - }) - r.Group(func(r chi.Router) { - r.Put(options.BaseURL+"/api/endpoints/{id}", wrapper.UpdateEndpoint) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/hydra/consent/approve", wrapper.ApproveHydraConsent) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/hydra/consent/options", wrapper.StartHydraConsent) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/hydra/consent/verify", wrapper.FinishHydraConsent) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/hydra/login/options", wrapper.StartHydraLogin) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/hydra/login/verify", wrapper.FinishHydraLogin) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/hydra/register", wrapper.RegisterOauthClient) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/keys", wrapper.ListSshKeys) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/passkey-invite/register", wrapper.FinishInvitePasskeyRegistration) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/passkey-invite/register/options", wrapper.StartInvitePasskeyRegistration) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/passkey-invite/{token}", wrapper.GetPasskeyInviteByToken) - }) - r.Group(func(r chi.Router) { - r.Delete(options.BaseURL+"/api/push/subscribe", wrapper.DeletePushSubscription) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/push/subscribe", wrapper.CreatePushSubscription) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/sessions", wrapper.ListSessions) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/sessions", wrapper.CreateSession) - }) - r.Group(func(r chi.Router) { - r.Delete(options.BaseURL+"/api/sessions/{sessionId}", wrapper.CloseSession) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/sessions/{sessionId}/tail", wrapper.GetSessionTail) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/version", wrapper.GetVersion) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/webauthn/credentials", wrapper.ListPasskeys) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/credentials/{id}/confirm", wrapper.ConfirmPasskey) - }) - r.Group(func(r chi.Router) { - r.Patch(options.BaseURL+"/api/webauthn/credentials/{id}/label", wrapper.UpdatePasskeyLabel) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/credentials/{id}/revoke", wrapper.RevokePasskey) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/api/webauthn/invite", wrapper.GetPasskeyInvite) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/invite", wrapper.CreatePasskeyInvite) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/register", wrapper.FinishPasskeyRegistration) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/register/options", wrapper.StartPasskeyRegistration) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/stepup/options", wrapper.StartStepUp) - }) - r.Group(func(r chi.Router) { - r.Post(options.BaseURL+"/api/webauthn/stepup/verify", wrapper.FinishStepUp) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/config.js", wrapper.GetConfigScript) - }) - r.Group(func(r chi.Router) { - r.Get(options.BaseURL+"/health", wrapper.GetHealth) - }) - - return r -} - -type ForbiddenJSONResponse Error - -type NotFoundJSONResponse Error - -type StepUpRequiredJSONResponse StepUpError - -type UnauthorizedJSONResponse Error - -type GetAuthorizationServerMetadataRequestObject struct { -} - -type GetAuthorizationServerMetadataResponseObject interface { - VisitGetAuthorizationServerMetadataResponse(w http.ResponseWriter) error -} - -type GetAuthorizationServerMetadata200JSONResponse AuthorizationServerMetadata - -func (response GetAuthorizationServerMetadata200JSONResponse) VisitGetAuthorizationServerMetadataResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetProtectedResourceMetadataRequestObject struct { -} - -type GetProtectedResourceMetadataResponseObject interface { - VisitGetProtectedResourceMetadataResponse(w http.ResponseWriter) error -} - -type GetProtectedResourceMetadata200JSONResponse ProtectedResourceMetadata - -func (response GetProtectedResourceMetadata200JSONResponse) VisitGetProtectedResourceMetadataResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetProtectedResourceMetadataAgentProxyRequestObject struct { -} - -type GetProtectedResourceMetadataAgentProxyResponseObject interface { - VisitGetProtectedResourceMetadataAgentProxyResponse(w http.ResponseWriter) error -} - -type GetProtectedResourceMetadataAgentProxy200JSONResponse ProtectedResourceMetadata - -func (response GetProtectedResourceMetadataAgentProxy200JSONResponse) VisitGetProtectedResourceMetadataAgentProxyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetProtectedResourceMetadataAgentProxy404Response struct { -} - -func (response GetProtectedResourceMetadataAgentProxy404Response) VisitGetProtectedResourceMetadataAgentProxyResponse(w http.ResponseWriter) error { - w.WriteHeader(404) - return nil -} - -type GetProtectedResourceMetadataMcpRequestObject struct { -} - -type GetProtectedResourceMetadataMcpResponseObject interface { - VisitGetProtectedResourceMetadataMcpResponse(w http.ResponseWriter) error -} - -type GetProtectedResourceMetadataMcp200JSONResponse ProtectedResourceMetadata - -func (response GetProtectedResourceMetadataMcp200JSONResponse) VisitGetProtectedResourceMetadataMcpResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ListAccountsRequestObject struct { -} - -type ListAccountsResponseObject interface { - VisitListAccountsResponse(w http.ResponseWriter) error -} - -type ListAccounts200JSONResponse struct { - Accounts *[]struct { - CreatedAt *time.Time `json:"createdAt,omitempty"` - Enabled *bool `json:"enabled,omitempty"` - Id *string `json:"id,omitempty"` - IsAdmin *bool `json:"isAdmin,omitempty"` - LastUsedAt *time.Time `json:"lastUsedAt,omitempty"` - MaxSessions *int `json:"maxSessions,omitempty"` - Name *string `json:"name,omitempty"` - } `json:"accounts,omitempty"` -} - -func (response ListAccounts200JSONResponse) VisitListAccountsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ListAccounts403JSONResponse struct{ ForbiddenJSONResponse } - -func (response ListAccounts403JSONResponse) VisitListAccountsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type ExportSeedConfigRequestObject struct { -} - -type ExportSeedConfigResponseObject interface { - VisitExportSeedConfigResponse(w http.ResponseWriter) error -} - -type ExportSeedConfig200JSONResponse struct { - Endpoints *[]struct { - // Address user@host:port - Address *string `json:"address,omitempty"` - AgentForward *bool `json:"agentForward,omitempty"` - Label *string `json:"label,omitempty"` - } `json:"endpoints,omitempty"` - Passkeys *[]struct { - Counter *int `json:"counter,omitempty"` - CredentialId *string `json:"credentialId,omitempty"` - Label *string `json:"label,omitempty"` - PublicKeyHex *string `json:"publicKeyHex,omitempty"` - Transports *[]string `json:"transports,omitempty"` - } `json:"passkeys,omitempty"` -} - -func (response ExportSeedConfig200JSONResponse) VisitExportSeedConfigResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ExportSeedConfig403JSONResponse struct{ ForbiddenJSONResponse } - -func (response ExportSeedConfig403JSONResponse) VisitExportSeedConfigResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type ExportSeedConfig500JSONResponse Error - -func (response ExportSeedConfig500JSONResponse) VisitExportSeedConfigResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(500) - _, err := buf.WriteTo(w) - return err -} - -type DeleteAccountRequestObject struct { - Id string `json:"id"` -} - -type DeleteAccountResponseObject interface { - VisitDeleteAccountResponse(w http.ResponseWriter) error -} - -type DeleteAccount200JSONResponse StatusDeleted - -func (response DeleteAccount200JSONResponse) VisitDeleteAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type DeleteAccount400JSONResponse Error - -func (response DeleteAccount400JSONResponse) VisitDeleteAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type DeleteAccount403JSONResponse struct{ ForbiddenJSONResponse } - -func (response DeleteAccount403JSONResponse) VisitDeleteAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type GetActionRequestObject struct { - ActionId string `json:"actionId"` -} - -type GetActionResponseObject interface { - VisitGetActionResponse(w http.ResponseWriter) error -} - -type GetAction200JSONResponse PendingActionView - -func (response GetAction200JSONResponse) VisitGetActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetAction403JSONResponse struct{ ForbiddenJSONResponse } - -func (response GetAction403JSONResponse) VisitGetActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type GetAction404JSONResponse struct{ NotFoundJSONResponse } - -func (response GetAction404JSONResponse) VisitGetActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type DenyActionRequestObject struct { - ActionId string `json:"actionId"` -} - -type DenyActionResponseObject interface { - VisitDenyActionResponse(w http.ResponseWriter) error -} - -type DenyAction200JSONResponse struct { - Status *DenyAction200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response DenyAction200JSONResponse) VisitDenyActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type DenyAction403JSONResponse struct{ ForbiddenJSONResponse } - -func (response DenyAction403JSONResponse) VisitDenyActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type DenyAction404JSONResponse struct{ NotFoundJSONResponse } - -func (response DenyAction404JSONResponse) VisitDenyActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type DenyAction409JSONResponse Error - -func (response DenyAction409JSONResponse) VisitDenyActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(409) - _, err := buf.WriteTo(w) - return err -} - -type ResolveActionRequestObject struct { - ActionId string `json:"actionId"` - Body *ResolveActionJSONRequestBody -} - -type ResolveActionResponseObject interface { - VisitResolveActionResponse(w http.ResponseWriter) error -} - -type ResolveAction200JSONResponse struct { - RedirectTo *string `json:"redirectTo,omitempty"` -} - -func (response ResolveAction200JSONResponse) VisitResolveActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ResolveAction400JSONResponse Error - -func (response ResolveAction400JSONResponse) VisitResolveActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type ResolveAction403JSONResponse struct{ ForbiddenJSONResponse } - -func (response ResolveAction403JSONResponse) VisitResolveActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type ResolveAction404JSONResponse struct{ NotFoundJSONResponse } - -func (response ResolveAction404JSONResponse) VisitResolveActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type ResolveAction409JSONResponse Error - -func (response ResolveAction409JSONResponse) VisitResolveActionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(409) - _, err := buf.WriteTo(w) - return err -} - -type ListAuditSessionsRequestObject struct { - Params ListAuditSessionsParams -} - -type ListAuditSessionsResponseObject interface { - VisitListAuditSessionsResponse(w http.ResponseWriter) error -} - -type ListAuditSessions200JSONResponse SessionLifecyclePage - -func (response ListAuditSessions200JSONResponse) VisitListAuditSessionsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ListAuditSigningsRequestObject struct { - Params ListAuditSigningsParams -} - -type ListAuditSigningsResponseObject interface { - VisitListAuditSigningsResponse(w http.ResponseWriter) error -} - -type ListAuditSignings200JSONResponse SigningRequestPage - -func (response ListAuditSignings200JSONResponse) VisitListAuditSigningsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ListAuditSignings400JSONResponse Error - -func (response ListAuditSignings400JSONResponse) VisitListAuditSigningsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type GetAuditSigningRequestObject struct { - Id string `json:"id"` -} - -type GetAuditSigningResponseObject interface { - VisitGetAuditSigningResponse(w http.ResponseWriter) error -} - -type GetAuditSigning200JSONResponse SigningRequestRow - -func (response GetAuditSigning200JSONResponse) VisitGetAuditSigningResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetAuditSigning404JSONResponse Error - -func (response GetAuditSigning404JSONResponse) VisitGetAuditSigningResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type GetCurrentAccountRequestObject struct { -} - -type GetCurrentAccountResponseObject interface { - VisitGetCurrentAccountResponse(w http.ResponseWriter) error -} - -type GetCurrentAccount200JSONResponse struct { - DemoEndpointsAvailable *bool `json:"demoEndpointsAvailable,omitempty"` - Id *string `json:"id,omitempty"` - IsAdmin *bool `json:"isAdmin,omitempty"` - Name *string `json:"name,omitempty"` - ShowDemoEndpoints *bool `json:"showDemoEndpoints,omitempty"` -} - -func (response GetCurrentAccount200JSONResponse) VisitGetCurrentAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetCurrentAccount401JSONResponse struct{ UnauthorizedJSONResponse } - -func (response GetCurrentAccount401JSONResponse) VisitGetCurrentAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(401) - _, err := buf.WriteTo(w) - return err -} - -type UpdateCurrentAccountRequestObject struct { - Body *UpdateCurrentAccountJSONRequestBody -} - -type UpdateCurrentAccountResponseObject interface { - VisitUpdateCurrentAccountResponse(w http.ResponseWriter) error -} - -type UpdateCurrentAccount200JSONResponse StatusUpdated - -func (response UpdateCurrentAccount200JSONResponse) VisitUpdateCurrentAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type UpdateCurrentAccount400JSONResponse Error - -func (response UpdateCurrentAccount400JSONResponse) VisitUpdateCurrentAccountResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type GetPasskeyStatusRequestObject struct { -} - -type GetPasskeyStatusResponseObject interface { - VisitGetPasskeyStatusResponse(w http.ResponseWriter) error -} - -type GetPasskeyStatus200JSONResponse struct { - HasPasskeys bool `json:"hasPasskeys"` -} - -func (response GetPasskeyStatus200JSONResponse) VisitGetPasskeyStatusResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishAccountRegistrationRequestObject struct { - Body *FinishAccountRegistrationJSONRequestBody -} - -type FinishAccountRegistrationResponseObject interface { - VisitFinishAccountRegistrationResponse(w http.ResponseWriter) error -} - -type FinishAccountRegistration200JSONResponse struct { - AccountId string `json:"accountId"` - CredentialId string `json:"credentialId"` - - // Id credential row id - Id string `json:"id"` - Label string `json:"label"` - Verified FinishAccountRegistration200JSONResponseBodyVerified `json:"verified"` -} - -func (response FinishAccountRegistration200JSONResponse) VisitFinishAccountRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishAccountRegistration400JSONResponse Error - -func (response FinishAccountRegistration400JSONResponse) VisitFinishAccountRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type FinishAccountRegistration403JSONResponse Error - -func (response FinishAccountRegistration403JSONResponse) VisitFinishAccountRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type StartAccountRegistrationRequestObject struct { - Body *StartAccountRegistrationJSONRequestBody -} - -type StartAccountRegistrationResponseObject interface { - VisitStartAccountRegistrationResponse(w http.ResponseWriter) error -} - -type StartAccountRegistration200JSONResponse WebAuthnRegistrationOptions - -func (response StartAccountRegistration200JSONResponse) VisitStartAccountRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type StartAccountRegistration403JSONResponse Error - -func (response StartAccountRegistration403JSONResponse) VisitStartAccountRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(403) - _, err := buf.WriteTo(w) - return err -} - -type ListAuthorizedClientsRequestObject struct { -} - -type ListAuthorizedClientsResponseObject interface { - VisitListAuthorizedClientsResponse(w http.ResponseWriter) error -} - -type ListAuthorizedClients200JSONResponse struct { - Sessions *[]AuthSessionView `json:"sessions,omitempty"` -} - -func (response ListAuthorizedClients200JSONResponse) VisitListAuthorizedClientsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type RevokeAllAuthorizedClientsRequestObject struct { - Params RevokeAllAuthorizedClientsParams -} - -type RevokeAllAuthorizedClientsResponseObject interface { - VisitRevokeAllAuthorizedClientsResponse(w http.ResponseWriter) error -} - -type RevokeAllAuthorizedClients200JSONResponse struct { - Status *RevokeAllAuthorizedClients200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response RevokeAllAuthorizedClients200JSONResponse) VisitRevokeAllAuthorizedClientsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type RevokeAllAuthorizedClients401JSONResponse struct{ StepUpRequiredJSONResponse } - -func (response RevokeAllAuthorizedClients401JSONResponse) VisitRevokeAllAuthorizedClientsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(401) - _, err := buf.WriteTo(w) - return err -} - -type RevokeAuthorizedClientRequestObject struct { - ClientId string `json:"clientId"` - Params RevokeAuthorizedClientParams -} - -type RevokeAuthorizedClientResponseObject interface { - VisitRevokeAuthorizedClientResponse(w http.ResponseWriter) error -} - -type RevokeAuthorizedClient200JSONResponse struct { - Status *RevokeAuthorizedClient200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response RevokeAuthorizedClient200JSONResponse) VisitRevokeAuthorizedClientResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type RevokeAuthorizedClient401JSONResponse struct{ StepUpRequiredJSONResponse } - -func (response RevokeAuthorizedClient401JSONResponse) VisitRevokeAuthorizedClientResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(401) - _, err := buf.WriteTo(w) - return err -} - -type ListEndpointsRequestObject struct { -} - -type ListEndpointsResponseObject interface { - VisitListEndpointsResponse(w http.ResponseWriter) error -} - -type ListEndpoints200JSONResponse struct { - Endpoints *[]Endpoint `json:"endpoints,omitempty"` -} - -func (response ListEndpoints200JSONResponse) VisitListEndpointsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type CreateEndpointRequestObject struct { - Body *CreateEndpointJSONRequestBody -} - -type CreateEndpointResponseObject interface { - VisitCreateEndpointResponse(w http.ResponseWriter) error -} - -type CreateEndpoint200JSONResponse StatusCreated - -func (response CreateEndpoint200JSONResponse) VisitCreateEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type CreateEndpoint400JSONResponse Error - -func (response CreateEndpoint400JSONResponse) VisitCreateEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type DeleteEndpointRequestObject struct { - Id string `json:"id"` -} - -type DeleteEndpointResponseObject interface { - VisitDeleteEndpointResponse(w http.ResponseWriter) error -} - -type DeleteEndpoint200JSONResponse StatusDeleted - -func (response DeleteEndpoint200JSONResponse) VisitDeleteEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type DeleteEndpoint400JSONResponse Error - -func (response DeleteEndpoint400JSONResponse) VisitDeleteEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type DeleteEndpoint409JSONResponse Error - -func (response DeleteEndpoint409JSONResponse) VisitDeleteEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(409) - _, err := buf.WriteTo(w) - return err -} - -type UpdateEndpointRequestObject struct { - Id string `json:"id"` - Body *UpdateEndpointJSONRequestBody -} - -type UpdateEndpointResponseObject interface { - VisitUpdateEndpointResponse(w http.ResponseWriter) error -} - -type UpdateEndpoint200JSONResponse StatusUpdated - -func (response UpdateEndpoint200JSONResponse) VisitUpdateEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type UpdateEndpoint400JSONResponse Error - -func (response UpdateEndpoint400JSONResponse) VisitUpdateEndpointResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type ApproveHydraConsentRequestObject struct { -} - -type ApproveHydraConsentResponseObject interface { - VisitApproveHydraConsentResponse(w http.ResponseWriter) error -} - -type ApproveHydraConsent200JSONResponse struct { - RedirectTo *string `json:"redirectTo,omitempty"` -} - -func (response ApproveHydraConsent200JSONResponse) VisitApproveHydraConsentResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type StartHydraConsentRequestObject struct { -} - -type StartHydraConsentResponseObject interface { - VisitStartHydraConsentResponse(w http.ResponseWriter) error -} - -type StartHydraConsent200Response struct { -} - -func (response StartHydraConsent200Response) VisitStartHydraConsentResponse(w http.ResponseWriter) error { - w.WriteHeader(200) - return nil -} - -type FinishHydraConsentRequestObject struct { -} - -type FinishHydraConsentResponseObject interface { - VisitFinishHydraConsentResponse(w http.ResponseWriter) error -} - -type FinishHydraConsent200JSONResponse struct { - RedirectTo *string `json:"redirectTo,omitempty"` -} - -func (response FinishHydraConsent200JSONResponse) VisitFinishHydraConsentResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type StartHydraLoginRequestObject struct { -} - -type StartHydraLoginResponseObject interface { - VisitStartHydraLoginResponse(w http.ResponseWriter) error -} - -type StartHydraLogin200JSONResponse WebAuthnAuthenticationOptions - -func (response StartHydraLogin200JSONResponse) VisitStartHydraLoginResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishHydraLoginRequestObject struct { - Body *FinishHydraLoginJSONRequestBody -} - -type FinishHydraLoginResponseObject interface { - VisitFinishHydraLoginResponse(w http.ResponseWriter) error -} - -type FinishHydraLogin200JSONResponse struct { - Error *string `json:"error,omitempty"` - RedirectTo *string `json:"redirectTo,omitempty"` -} - -func (response FinishHydraLogin200JSONResponse) VisitFinishHydraLoginResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type RegisterOauthClientRequestObject struct { - Body *RegisterOauthClientJSONRequestBody -} - -type RegisterOauthClientResponseObject interface { - VisitRegisterOauthClientResponse(w http.ResponseWriter) error -} - -type RegisterOauthClient201JSONResponse struct { - ClientId *string `json:"client_id,omitempty"` - ClientIdIssuedAt *int `json:"client_id_issued_at,omitempty"` - ClientName *string `json:"client_name,omitempty"` - GrantTypes *[]string `json:"grant_types,omitempty"` - RedirectUris *[]string `json:"redirect_uris,omitempty"` - ResponseTypes *[]string `json:"response_types,omitempty"` - Scope *string `json:"scope,omitempty"` - TokenEndpointAuthMethod *RegisterOauthClient201JSONResponseBodyTokenEndpointAuthMethod `json:"token_endpoint_auth_method,omitempty"` -} - -func (response RegisterOauthClient201JSONResponse) VisitRegisterOauthClientResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(201) - _, err := buf.WriteTo(w) - return err -} - -type RegisterOauthClient400JSONResponse struct { - Error *string `json:"error,omitempty"` - ErrorDescription *string `json:"error_description,omitempty"` -} - -func (response RegisterOauthClient400JSONResponse) VisitRegisterOauthClientResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type RegisterOauthClient502JSONResponse struct { - Error *RegisterOauthClient502JSONResponseBodyError `json:"error,omitempty"` - ErrorDescription *string `json:"error_description,omitempty"` -} - -func (response RegisterOauthClient502JSONResponse) VisitRegisterOauthClientResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(502) - _, err := buf.WriteTo(w) - return err -} - -type ListSshKeysRequestObject struct { -} - -type ListSshKeysResponseObject interface { - VisitListSshKeysResponse(w http.ResponseWriter) error -} - -type ListSshKeys200JSONResponse struct { - Keys *[]struct { - Algorithm *string `json:"algorithm,omitempty"` - AuthorizedKeysEntry *string `json:"authorizedKeysEntry,omitempty"` - Available *bool `json:"available,omitempty"` - CreatedAt *time.Time `json:"createdAt,omitempty"` - Fingerprint *string `json:"fingerprint,omitempty"` - Id *string `json:"id,omitempty"` - Label *string `json:"label,omitempty"` - LastUsedAt *time.Time `json:"lastUsedAt,omitempty"` - Revoked *bool `json:"revoked,omitempty"` - Type *string `json:"type,omitempty"` - } `json:"keys,omitempty"` -} - -func (response ListSshKeys200JSONResponse) VisitListSshKeysResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishInvitePasskeyRegistrationRequestObject struct { - Body *FinishInvitePasskeyRegistrationJSONRequestBody -} - -type FinishInvitePasskeyRegistrationResponseObject interface { - VisitFinishInvitePasskeyRegistrationResponse(w http.ResponseWriter) error -} - -type FinishInvitePasskeyRegistration200JSONResponse struct { - Fingerprint *string `json:"fingerprint,omitempty"` - Label *string `json:"label,omitempty"` - Status *FinishInvitePasskeyRegistration200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response FinishInvitePasskeyRegistration200JSONResponse) VisitFinishInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishInvitePasskeyRegistration400JSONResponse Error - -func (response FinishInvitePasskeyRegistration400JSONResponse) VisitFinishInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type FinishInvitePasskeyRegistration404JSONResponse Error - -func (response FinishInvitePasskeyRegistration404JSONResponse) VisitFinishInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type FinishInvitePasskeyRegistration409JSONResponse Error - -func (response FinishInvitePasskeyRegistration409JSONResponse) VisitFinishInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(409) - _, err := buf.WriteTo(w) - return err -} - -type StartInvitePasskeyRegistrationRequestObject struct { - Body *StartInvitePasskeyRegistrationJSONRequestBody -} - -type StartInvitePasskeyRegistrationResponseObject interface { - VisitStartInvitePasskeyRegistrationResponse(w http.ResponseWriter) error -} - -type StartInvitePasskeyRegistration200JSONResponse WebAuthnRegistrationOptions - -func (response StartInvitePasskeyRegistration200JSONResponse) VisitStartInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type StartInvitePasskeyRegistration400JSONResponse Error - -func (response StartInvitePasskeyRegistration400JSONResponse) VisitStartInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type StartInvitePasskeyRegistration404JSONResponse Error - -func (response StartInvitePasskeyRegistration404JSONResponse) VisitStartInvitePasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type GetPasskeyInviteByTokenRequestObject struct { - Token string `json:"token"` -} - -type GetPasskeyInviteByTokenResponseObject interface { - VisitGetPasskeyInviteByTokenResponse(w http.ResponseWriter) error -} - -type GetPasskeyInviteByToken200JSONResponse struct { - AccountName *string `json:"accountName,omitempty"` - ExpiresAt *time.Time `json:"expiresAt,omitempty"` -} - -func (response GetPasskeyInviteByToken200JSONResponse) VisitGetPasskeyInviteByTokenResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetPasskeyInviteByToken404JSONResponse Error - -func (response GetPasskeyInviteByToken404JSONResponse) VisitGetPasskeyInviteByTokenResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type DeletePushSubscriptionRequestObject struct { - Body *DeletePushSubscriptionJSONRequestBody -} - -type DeletePushSubscriptionResponseObject interface { - VisitDeletePushSubscriptionResponse(w http.ResponseWriter) error -} - -type DeletePushSubscription200JSONResponse struct { - Ok *DeletePushSubscription200JSONResponseBodyOk `json:"ok,omitempty"` -} - -func (response DeletePushSubscription200JSONResponse) VisitDeletePushSubscriptionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type DeletePushSubscription400JSONResponse Error - -func (response DeletePushSubscription400JSONResponse) VisitDeletePushSubscriptionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type CreatePushSubscriptionRequestObject struct { - Body *CreatePushSubscriptionJSONRequestBody -} - -type CreatePushSubscriptionResponseObject interface { - VisitCreatePushSubscriptionResponse(w http.ResponseWriter) error -} - -type CreatePushSubscription200JSONResponse struct { - Id *string `json:"id,omitempty"` -} - -func (response CreatePushSubscription200JSONResponse) VisitCreatePushSubscriptionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type CreatePushSubscription400JSONResponse Error - -func (response CreatePushSubscription400JSONResponse) VisitCreatePushSubscriptionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type CreatePushSubscription409JSONResponse Error - -func (response CreatePushSubscription409JSONResponse) VisitCreatePushSubscriptionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(409) - _, err := buf.WriteTo(w) - return err -} - -type ListSessionsRequestObject struct { -} - -type ListSessionsResponseObject interface { - VisitListSessionsResponse(w http.ResponseWriter) error -} - -type ListSessions200JSONResponse struct { - Sessions *[]TerminalSession `json:"sessions,omitempty"` -} - -func (response ListSessions200JSONResponse) VisitListSessionsResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type CreateSessionRequestObject struct { - Body *CreateSessionJSONRequestBody -} - -type CreateSessionResponseObject interface { - VisitCreateSessionResponse(w http.ResponseWriter) error -} - -type CreateSession200JSONResponse TerminalSession - -func (response CreateSession200JSONResponse) VisitCreateSessionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type CreateSession400JSONResponse Error - -func (response CreateSession400JSONResponse) VisitCreateSessionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type CreateSession404JSONResponse Error - -func (response CreateSession404JSONResponse) VisitCreateSessionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type CreateSession429JSONResponse Error - -func (response CreateSession429JSONResponse) VisitCreateSessionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(429) - _, err := buf.WriteTo(w) - return err -} - -type CloseSessionRequestObject struct { - SessionId string `json:"sessionId"` -} - -type CloseSessionResponseObject interface { - VisitCloseSessionResponse(w http.ResponseWriter) error -} - -type CloseSession200JSONResponse struct { - Status *CloseSession200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response CloseSession200JSONResponse) VisitCloseSessionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type CloseSession404JSONResponse struct{ NotFoundJSONResponse } - -func (response CloseSession404JSONResponse) VisitCloseSessionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type GetSessionTailRequestObject struct { - SessionId string `json:"sessionId"` - Params GetSessionTailParams -} - -type GetSessionTailResponseObject interface { - VisitGetSessionTailResponse(w http.ResponseWriter) error -} - -type GetSessionTail200JSONResponse struct { - Data *string `json:"data,omitempty"` -} - -func (response GetSessionTail200JSONResponse) VisitGetSessionTailResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetSessionTail404JSONResponse struct{ NotFoundJSONResponse } - -func (response GetSessionTail404JSONResponse) VisitGetSessionTailResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type GetVersionRequestObject struct { -} - -type GetVersionResponseObject interface { - VisitGetVersionResponse(w http.ResponseWriter) error -} - -type GetVersion200JSONResponse struct { - // BuiltAt Build timestamp, or null - BuiltAt *time.Time `json:"builtAt"` - - // Display Human-readable: tag, else ref@shortSha - Display string `json:"display"` - - // Ref Branch/ref name, or "local" - Ref string `json:"ref"` - - // Sha Full git SHA, or "dev" for local builds - Sha string `json:"sha"` - - // Tag Release tag, or null - Tag *string `json:"tag"` -} - -func (response GetVersion200JSONResponse) VisitGetVersionResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ListPasskeysRequestObject struct { -} - -type ListPasskeysResponseObject interface { - VisitListPasskeysResponse(w http.ResponseWriter) error -} - -type ListPasskeys200JSONResponse struct { - Credentials *[]struct { - Algorithm *string `json:"algorithm,omitempty"` - AuthorizedKeysEntry *string `json:"authorizedKeysEntry,omitempty"` - CreatedAt *time.Time `json:"createdAt,omitempty"` - CredentialId *string `json:"credentialId,omitempty"` - Fingerprint *string `json:"fingerprint,omitempty"` - Id *string `json:"id,omitempty"` - Label *string `json:"label,omitempty"` - LastUsedAt *time.Time `json:"lastUsedAt,omitempty"` - Revoked *bool `json:"revoked,omitempty"` - State *string `json:"state,omitempty"` - } `json:"credentials,omitempty"` - SshdConfig *string `json:"sshdConfig,omitempty"` -} - -func (response ListPasskeys200JSONResponse) VisitListPasskeysResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ConfirmPasskeyRequestObject struct { - Id string `json:"id"` - Params ConfirmPasskeyParams -} - -type ConfirmPasskeyResponseObject interface { - VisitConfirmPasskeyResponse(w http.ResponseWriter) error -} - -type ConfirmPasskey200JSONResponse struct { - Status *ConfirmPasskey200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response ConfirmPasskey200JSONResponse) VisitConfirmPasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type ConfirmPasskey400JSONResponse Error - -func (response ConfirmPasskey400JSONResponse) VisitConfirmPasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type ConfirmPasskey401JSONResponse struct{ StepUpRequiredJSONResponse } - -func (response ConfirmPasskey401JSONResponse) VisitConfirmPasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(401) - _, err := buf.WriteTo(w) - return err -} - -type ConfirmPasskey404JSONResponse struct{ NotFoundJSONResponse } - -func (response ConfirmPasskey404JSONResponse) VisitConfirmPasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type UpdatePasskeyLabelRequestObject struct { - Id string `json:"id"` - Body *UpdatePasskeyLabelJSONRequestBody -} - -type UpdatePasskeyLabelResponseObject interface { - VisitUpdatePasskeyLabelResponse(w http.ResponseWriter) error -} - -type UpdatePasskeyLabel200JSONResponse StatusUpdated - -func (response UpdatePasskeyLabel200JSONResponse) VisitUpdatePasskeyLabelResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type UpdatePasskeyLabel400JSONResponse Error - -func (response UpdatePasskeyLabel400JSONResponse) VisitUpdatePasskeyLabelResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type UpdatePasskeyLabel404JSONResponse struct{ NotFoundJSONResponse } - -func (response UpdatePasskeyLabel404JSONResponse) VisitUpdatePasskeyLabelResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type UpdatePasskeyLabel409JSONResponse Error - -func (response UpdatePasskeyLabel409JSONResponse) VisitUpdatePasskeyLabelResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(409) - _, err := buf.WriteTo(w) - return err -} - -type RevokePasskeyRequestObject struct { - Id string `json:"id"` - Params RevokePasskeyParams - Body *RevokePasskeyJSONRequestBody -} - -type RevokePasskeyResponseObject interface { - VisitRevokePasskeyResponse(w http.ResponseWriter) error -} - -type RevokePasskey200JSONResponse struct { - SessionsInvalidated *bool `json:"sessionsInvalidated,omitempty"` - Status *RevokePasskey200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response RevokePasskey200JSONResponse) VisitRevokePasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type RevokePasskey400JSONResponse Error - -func (response RevokePasskey400JSONResponse) VisitRevokePasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type RevokePasskey401JSONResponse struct{ StepUpRequiredJSONResponse } - -func (response RevokePasskey401JSONResponse) VisitRevokePasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(401) - _, err := buf.WriteTo(w) - return err -} - -type RevokePasskey404JSONResponse Error - -func (response RevokePasskey404JSONResponse) VisitRevokePasskeyResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type GetPasskeyInviteRequestObject struct { -} - -type GetPasskeyInviteResponseObject interface { - VisitGetPasskeyInviteResponse(w http.ResponseWriter) error -} - -type GetPasskeyInvite200JSONResponse struct { - Invite *struct { - CreatedAt *time.Time `json:"createdAt,omitempty"` - ExpiresAt *time.Time `json:"expiresAt,omitempty"` - Token *string `json:"token,omitempty"` - } `json:"invite,omitempty"` -} - -func (response GetPasskeyInvite200JSONResponse) VisitGetPasskeyInviteResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type GetPasskeyInvite404JSONResponse Error - -func (response GetPasskeyInvite404JSONResponse) VisitGetPasskeyInviteResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(404) - _, err := buf.WriteTo(w) - return err -} - -type CreatePasskeyInviteRequestObject struct { -} - -type CreatePasskeyInviteResponseObject interface { - VisitCreatePasskeyInviteResponse(w http.ResponseWriter) error -} - -type CreatePasskeyInvite200JSONResponse struct { - Invite *struct { - CreatedAt *time.Time `json:"createdAt,omitempty"` - ExpiresAt *time.Time `json:"expiresAt,omitempty"` - Token *string `json:"token,omitempty"` - } `json:"invite,omitempty"` -} - -func (response CreatePasskeyInvite200JSONResponse) VisitCreatePasskeyInviteResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishPasskeyRegistrationRequestObject struct { - Params FinishPasskeyRegistrationParams - Body *FinishPasskeyRegistrationJSONRequestBody -} - -type FinishPasskeyRegistrationResponseObject interface { - VisitFinishPasskeyRegistrationResponse(w http.ResponseWriter) error -} - -type FinishPasskeyRegistration200JSONResponse struct { - AuthorizedKeysEntry *string `json:"authorizedKeysEntry,omitempty"` - CredentialId *string `json:"credentialId,omitempty"` - Id *string `json:"id,omitempty"` - Label *string `json:"label,omitempty"` - SshdConfig *string `json:"sshdConfig,omitempty"` - Verified *FinishPasskeyRegistration200JSONResponseBodyVerified `json:"verified,omitempty"` -} - -func (response FinishPasskeyRegistration200JSONResponse) VisitFinishPasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishPasskeyRegistration400JSONResponse Error - -func (response FinishPasskeyRegistration400JSONResponse) VisitFinishPasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type FinishPasskeyRegistration401JSONResponse struct{ StepUpRequiredJSONResponse } - -func (response FinishPasskeyRegistration401JSONResponse) VisitFinishPasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(401) - _, err := buf.WriteTo(w) - return err -} - -type StartPasskeyRegistrationRequestObject struct { - Body *StartPasskeyRegistrationJSONRequestBody -} - -type StartPasskeyRegistrationResponseObject interface { - VisitStartPasskeyRegistrationResponse(w http.ResponseWriter) error -} - -type StartPasskeyRegistration200JSONResponse WebAuthnRegistrationOptions - -func (response StartPasskeyRegistration200JSONResponse) VisitStartPasskeyRegistrationResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type StartStepUpRequestObject struct { - Body *StartStepUpJSONRequestBody -} - -type StartStepUpResponseObject interface { - VisitStartStepUpResponse(w http.ResponseWriter) error -} - -type StartStepUp200JSONResponse WebAuthnAuthenticationOptions - -func (response StartStepUp200JSONResponse) VisitStartStepUpResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type StartStepUp400JSONResponse Error - -func (response StartStepUp400JSONResponse) VisitStartStepUpResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type FinishStepUpRequestObject struct { - Body *FinishStepUpJSONRequestBody -} - -type FinishStepUpResponseObject interface { - VisitFinishStepUpResponse(w http.ResponseWriter) error -} - -type FinishStepUp200JSONResponse struct { - Action *string `json:"action,omitempty"` - ExpiresAt *time.Time `json:"expiresAt,omitempty"` - StepUpToken *string `json:"stepUpToken,omitempty"` -} - -func (response FinishStepUp200JSONResponse) VisitFinishStepUpResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -type FinishStepUp400JSONResponse Error - -func (response FinishStepUp400JSONResponse) VisitFinishStepUpResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(400) - _, err := buf.WriteTo(w) - return err -} - -type GetConfigScriptRequestObject struct { -} - -type GetConfigScriptResponseObject interface { - VisitGetConfigScriptResponse(w http.ResponseWriter) error -} - -type GetConfigScript200ApplicationjavascriptResponse struct { - Body io.Reader - ContentLength int64 -} - -func (response GetConfigScript200ApplicationjavascriptResponse) VisitGetConfigScriptResponse(w http.ResponseWriter) error { - - w.Header().Set("Content-Type", "application/javascript") - if response.ContentLength != 0 { - w.Header().Set("Content-Length", fmt.Sprint(response.ContentLength)) - } - w.WriteHeader(200) - - if closer, ok := response.Body.(io.ReadCloser); ok { - defer closer.Close() - } - _, err := io.Copy(w, response.Body) - return err -} - -type GetHealthRequestObject struct { -} - -type GetHealthResponseObject interface { - VisitGetHealthResponse(w http.ResponseWriter) error -} - -type GetHealth200JSONResponse struct { - Status *GetHealth200JSONResponseBodyStatus `json:"status,omitempty"` -} - -func (response GetHealth200JSONResponse) VisitGetHealthResponse(w http.ResponseWriter) error { - - var buf bytes.Buffer - if err := json.NewEncoder(&buf).Encode(response); err != nil { - return err - } - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(200) - _, err := buf.WriteTo(w) - return err -} - -// StrictServerInterface represents all server handlers. -type StrictServerInterface interface { - // Blended AS metadata (RFC 8414) - // (GET /.well-known/oauth-authorization-server) - GetAuthorizationServerMetadata(ctx context.Context, request GetAuthorizationServerMetadataRequestObject) (GetAuthorizationServerMetadataResponseObject, error) - // Protected-resource metadata — bare/default location (RFC 9728) - // (GET /.well-known/oauth-protected-resource) - GetProtectedResourceMetadata(ctx context.Context, request GetProtectedResourceMetadataRequestObject) (GetProtectedResourceMetadataResponseObject, error) - // Protected-resource metadata for /agent-proxy (only when agent proxy enabled) - // (GET /.well-known/oauth-protected-resource/agent-proxy) - GetProtectedResourceMetadataAgentProxy(ctx context.Context, request GetProtectedResourceMetadataAgentProxyRequestObject) (GetProtectedResourceMetadataAgentProxyResponseObject, error) - // Protected-resource metadata for /mcp (RFC 9728) - // (GET /.well-known/oauth-protected-resource/mcp) - GetProtectedResourceMetadataMcp(ctx context.Context, request GetProtectedResourceMetadataMcpRequestObject) (GetProtectedResourceMetadataMcpResponseObject, error) - // List all accounts (admin only) - // (GET /api/accounts) - ListAccounts(ctx context.Context, request ListAccountsRequestObject) (ListAccountsResponseObject, error) - // Export passkeys + endpoints as seed config (admin only) - // (GET /api/accounts/export-seed) - ExportSeedConfig(ctx context.Context, request ExportSeedConfigRequestObject) (ExportSeedConfigResponseObject, error) - // Hard-delete an account + cascade (admin only) - // (DELETE /api/accounts/{id}) - DeleteAccount(ctx context.Context, request DeleteAccountRequestObject) (DeleteAccountResponseObject, error) - // Get a pending signing action - // (GET /api/actions/{actionId}) - GetAction(ctx context.Context, request GetActionRequestObject) (GetActionResponseObject, error) - // Deny a signing action - // (POST /api/actions/{actionId}/deny) - DenyAction(ctx context.Context, request DenyActionRequestObject) (DenyActionResponseObject, error) - // Resolve a signing action (WebAuthn signature or key-approve) - // (POST /api/actions/{actionId}/resolve) - ResolveAction(ctx context.Context, request ResolveActionRequestObject) (ResolveActionResponseObject, error) - // Query session-lifecycle events - // (GET /api/audit/sessions) - ListAuditSessions(ctx context.Context, request ListAuditSessionsRequestObject) (ListAuditSessionsResponseObject, error) - // Query signing-request audit - // (GET /api/audit/signings) - ListAuditSignings(ctx context.Context, request ListAuditSigningsRequestObject) (ListAuditSigningsResponseObject, error) - // Get one signing-request record - // (GET /api/audit/signings/{id}) - GetAuditSigning(ctx context.Context, request GetAuditSigningRequestObject) (GetAuditSigningResponseObject, error) - // Current account profile - // (GET /api/auth/me) - GetCurrentAccount(ctx context.Context, request GetCurrentAccountRequestObject) (GetCurrentAccountResponseObject, error) - // Update current account (name, demo visibility) - // (PUT /api/auth/me) - UpdateCurrentAccount(ctx context.Context, request UpdateCurrentAccountRequestObject) (UpdateCurrentAccountResponseObject, error) - // Whether any passkeys exist yet (first-run detection) - // (GET /api/auth/passkey-status) - GetPasskeyStatus(ctx context.Context, request GetPasskeyStatusRequestObject) (GetPasskeyStatusResponseObject, error) - // Verify passkey + create the account (anonymous, rate-limited) - // (POST /api/auth/register) - FinishAccountRegistration(ctx context.Context, request FinishAccountRegistrationRequestObject) (FinishAccountRegistrationResponseObject, error) - // Registration options for anonymous self-registration (rate-limited) - // (POST /api/auth/register/options) - StartAccountRegistration(ctx context.Context, request StartAccountRegistrationRequestObject) (StartAccountRegistrationResponseObject, error) - // List authorized OAuth clients (one row per client_id) - // (GET /api/auth/sessions) - ListAuthorizedClients(ctx context.Context, request ListAuthorizedClientsRequestObject) (ListAuthorizedClientsResponseObject, error) - // Sign out everywhere (step-up gated) - // (POST /api/auth/sessions/revoke-all) - RevokeAllAuthorizedClients(ctx context.Context, request RevokeAllAuthorizedClientsRequestObject) (RevokeAllAuthorizedClientsResponseObject, error) - // Revoke one client's grant (step-up gated) - // (DELETE /api/auth/sessions/{clientId}) - RevokeAuthorizedClient(ctx context.Context, request RevokeAuthorizedClientRequestObject) (RevokeAuthorizedClientResponseObject, error) - // List account endpoints (+ demo endpoints if enabled) - // (GET /api/endpoints) - ListEndpoints(ctx context.Context, request ListEndpointsRequestObject) (ListEndpointsResponseObject, error) - // Create endpoint (server generates the id) - // (POST /api/endpoints) - CreateEndpoint(ctx context.Context, request CreateEndpointRequestObject) (CreateEndpointResponseObject, error) - // Delete endpoint - // (DELETE /api/endpoints/{id}) - DeleteEndpoint(ctx context.Context, request DeleteEndpointRequestObject) (DeleteEndpointResponseObject, error) - // Update endpoint (demo ids rejected) - // (PUT /api/endpoints/{id}) - UpdateEndpoint(ctx context.Context, request UpdateEndpointRequestObject) (UpdateEndpointResponseObject, error) - // No-passkey consent grant (valid only after a fresh login in-flow) - // (POST /api/hydra/consent/approve) - ApproveHydraConsent(ctx context.Context, request ApproveHydraConsentRequestObject) (ApproveHydraConsentResponseObject, error) - // Passkey consent challenge - // (POST /api/hydra/consent/options) - StartHydraConsent(ctx context.Context, request StartHydraConsentRequestObject) (StartHydraConsentResponseObject, error) - // Verify consent assertion, accept Hydra consent request - // (POST /api/hydra/consent/verify) - FinishHydraConsent(ctx context.Context, request FinishHydraConsentRequestObject) (FinishHydraConsentResponseObject, error) - // Passkey login challenge (rate-limited) - // (POST /api/hydra/login/options) - StartHydraLogin(ctx context.Context, request StartHydraLoginRequestObject) (StartHydraLoginResponseObject, error) - // Verify login assertion, accept Hydra login request - // (POST /api/hydra/login/verify) - FinishHydraLogin(ctx context.Context, request FinishHydraLoginRequestObject) (FinishHydraLoginResponseObject, error) - // Mediated Dynamic Client Registration (RFC 7591) - // (POST /api/hydra/register) - RegisterOauthClient(ctx context.Context, request RegisterOauthClientRequestObject) (RegisterOauthClientResponseObject, error) - // List file-based SSH keys (admin sees keys; non-admin sees empty) - // (GET /api/keys) - ListSshKeys(ctx context.Context, request ListSshKeysRequestObject) (ListSshKeysResponseObject, error) - // Verify + enroll a passkey via invite (anonymous) - // (POST /api/passkey-invite/register) - FinishInvitePasskeyRegistration(ctx context.Context, request FinishInvitePasskeyRegistrationRequestObject) (FinishInvitePasskeyRegistrationResponseObject, error) - // Registration options for invite enrollment (anonymous) - // (POST /api/passkey-invite/register/options) - StartInvitePasskeyRegistration(ctx context.Context, request StartInvitePasskeyRegistrationRequestObject) (StartInvitePasskeyRegistrationResponseObject, error) - // Look up an invite by token (anonymous) - // (GET /api/passkey-invite/{token}) - GetPasskeyInviteByToken(ctx context.Context, request GetPasskeyInviteByTokenRequestObject) (GetPasskeyInviteByTokenResponseObject, error) - // Unregister a Web Push subscription - // (DELETE /api/push/subscribe) - DeletePushSubscription(ctx context.Context, request DeletePushSubscriptionRequestObject) (DeletePushSubscriptionResponseObject, error) - // Register a Web Push subscription - // (POST /api/push/subscribe) - CreatePushSubscription(ctx context.Context, request CreatePushSubscriptionRequestObject) (CreatePushSubscriptionResponseObject, error) - // List the account's terminal sessions - // (GET /api/sessions) - ListSessions(ctx context.Context, request ListSessionsRequestObject) (ListSessionsResponseObject, error) - // Open an SSH session to an endpoint - // (POST /api/sessions) - CreateSession(ctx context.Context, request CreateSessionRequestObject) (CreateSessionResponseObject, error) - // Close a session - // (DELETE /api/sessions/{sessionId}) - CloseSession(ctx context.Context, request CloseSessionRequestObject) (CloseSessionResponseObject, error) - // Read the tail of a session's output buffer - // (GET /api/sessions/{sessionId}/tail) - GetSessionTail(ctx context.Context, request GetSessionTailRequestObject) (GetSessionTailResponseObject, error) - // Build info (curl-able without auth) - // (GET /api/version) - GetVersion(ctx context.Context, request GetVersionRequestObject) (GetVersionResponseObject, error) - // List the account's passkeys - // (GET /api/webauthn/credentials) - ListPasskeys(ctx context.Context, request ListPasskeysRequestObject) (ListPasskeysResponseObject, error) - // Confirm a pending invite passkey (step-up gated — confirm_passkey) - // (POST /api/webauthn/credentials/{id}/confirm) - ConfirmPasskey(ctx context.Context, request ConfirmPasskeyRequestObject) (ConfirmPasskeyResponseObject, error) - // Rename a passkey (no step-up — cosmetic) - // (PATCH /api/webauthn/credentials/{id}/label) - UpdatePasskeyLabel(ctx context.Context, request UpdatePasskeyLabelRequestObject) (UpdatePasskeyLabelResponseObject, error) - // Revoke a passkey (step-up gated — revoke_passkey) - // (POST /api/webauthn/credentials/{id}/revoke) - RevokePasskey(ctx context.Context, request RevokePasskeyRequestObject) (RevokePasskeyResponseObject, error) - // Get the active passkey invite (if any) - // (GET /api/webauthn/invite) - GetPasskeyInvite(ctx context.Context, request GetPasskeyInviteRequestObject) (GetPasskeyInviteResponseObject, error) - // Mint a passkey invite - // (POST /api/webauthn/invite) - CreatePasskeyInvite(ctx context.Context, request CreatePasskeyInviteRequestObject) (CreatePasskeyInviteResponseObject, error) - // Verify + store a new passkey (step-up gated — register_passkey) - // (POST /api/webauthn/register) - FinishPasskeyRegistration(ctx context.Context, request FinishPasskeyRegistrationRequestObject) (FinishPasskeyRegistrationResponseObject, error) - // Registration options for an in-account passkey add - // (POST /api/webauthn/register/options) - StartPasskeyRegistration(ctx context.Context, request StartPasskeyRegistrationRequestObject) (StartPasskeyRegistrationResponseObject, error) - // Authentication options for a step-up ceremony - // (POST /api/webauthn/stepup/options) - StartStepUp(ctx context.Context, request StartStepUpRequestObject) (StartStepUpResponseObject, error) - // Verify a step-up assertion, mint a single-use step-up token - // (POST /api/webauthn/stepup/verify) - FinishStepUp(ctx context.Context, request FinishStepUpRequestObject) (FinishStepUpResponseObject, error) - // Browser bootstrap config (JS, not JSON) - // (GET /config.js) - GetConfigScript(ctx context.Context, request GetConfigScriptRequestObject) (GetConfigScriptResponseObject, error) - // Liveness probe - // (GET /health) - GetHealth(ctx context.Context, request GetHealthRequestObject) (GetHealthResponseObject, error) -} - -type StrictHandlerFunc func(ctx context.Context, w http.ResponseWriter, r *http.Request, request any) (any, error) -type StrictMiddlewareFunc func(f StrictHandlerFunc, operationID string) StrictHandlerFunc - -type StrictHTTPServerOptions struct { - RequestErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error) - ResponseErrorHandlerFunc func(w http.ResponseWriter, r *http.Request, err error) -} - -func NewStrictHandler(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc) ServerInterface { - return &strictHandler{ssi: ssi, middlewares: middlewares, options: StrictHTTPServerOptions{ - RequestErrorHandlerFunc: func(w http.ResponseWriter, r *http.Request, err error) { - http.Error(w, err.Error(), http.StatusBadRequest) - }, - ResponseErrorHandlerFunc: func(w http.ResponseWriter, r *http.Request, err error) { - http.Error(w, err.Error(), http.StatusInternalServerError) - }, - }} -} - -func NewStrictHandlerWithOptions(ssi StrictServerInterface, middlewares []StrictMiddlewareFunc, options StrictHTTPServerOptions) ServerInterface { - return &strictHandler{ssi: ssi, middlewares: middlewares, options: options} -} - -type strictHandler struct { - ssi StrictServerInterface - middlewares []StrictMiddlewareFunc - options StrictHTTPServerOptions -} - -// GetAuthorizationServerMetadata operation middleware -func (sh *strictHandler) GetAuthorizationServerMetadata(w http.ResponseWriter, r *http.Request) { - var request GetAuthorizationServerMetadataRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetAuthorizationServerMetadata(ctx, request.(GetAuthorizationServerMetadataRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetAuthorizationServerMetadata") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetAuthorizationServerMetadataResponseObject); ok { - if err := validResponse.VisitGetAuthorizationServerMetadataResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetProtectedResourceMetadata operation middleware -func (sh *strictHandler) GetProtectedResourceMetadata(w http.ResponseWriter, r *http.Request) { - var request GetProtectedResourceMetadataRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetProtectedResourceMetadata(ctx, request.(GetProtectedResourceMetadataRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetProtectedResourceMetadata") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetProtectedResourceMetadataResponseObject); ok { - if err := validResponse.VisitGetProtectedResourceMetadataResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetProtectedResourceMetadataAgentProxy operation middleware -func (sh *strictHandler) GetProtectedResourceMetadataAgentProxy(w http.ResponseWriter, r *http.Request) { - var request GetProtectedResourceMetadataAgentProxyRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetProtectedResourceMetadataAgentProxy(ctx, request.(GetProtectedResourceMetadataAgentProxyRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetProtectedResourceMetadataAgentProxy") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetProtectedResourceMetadataAgentProxyResponseObject); ok { - if err := validResponse.VisitGetProtectedResourceMetadataAgentProxyResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetProtectedResourceMetadataMcp operation middleware -func (sh *strictHandler) GetProtectedResourceMetadataMcp(w http.ResponseWriter, r *http.Request) { - var request GetProtectedResourceMetadataMcpRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetProtectedResourceMetadataMcp(ctx, request.(GetProtectedResourceMetadataMcpRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetProtectedResourceMetadataMcp") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetProtectedResourceMetadataMcpResponseObject); ok { - if err := validResponse.VisitGetProtectedResourceMetadataMcpResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListAccounts operation middleware -func (sh *strictHandler) ListAccounts(w http.ResponseWriter, r *http.Request) { - var request ListAccountsRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListAccounts(ctx, request.(ListAccountsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListAccounts") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListAccountsResponseObject); ok { - if err := validResponse.VisitListAccountsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ExportSeedConfig operation middleware -func (sh *strictHandler) ExportSeedConfig(w http.ResponseWriter, r *http.Request) { - var request ExportSeedConfigRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ExportSeedConfig(ctx, request.(ExportSeedConfigRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ExportSeedConfig") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ExportSeedConfigResponseObject); ok { - if err := validResponse.VisitExportSeedConfigResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// DeleteAccount operation middleware -func (sh *strictHandler) DeleteAccount(w http.ResponseWriter, r *http.Request, id string) { - var request DeleteAccountRequestObject - - request.Id = id - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.DeleteAccount(ctx, request.(DeleteAccountRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "DeleteAccount") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(DeleteAccountResponseObject); ok { - if err := validResponse.VisitDeleteAccountResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetAction operation middleware -func (sh *strictHandler) GetAction(w http.ResponseWriter, r *http.Request, actionId string) { - var request GetActionRequestObject - - request.ActionId = actionId - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetAction(ctx, request.(GetActionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetAction") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetActionResponseObject); ok { - if err := validResponse.VisitGetActionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// DenyAction operation middleware -func (sh *strictHandler) DenyAction(w http.ResponseWriter, r *http.Request, actionId string) { - var request DenyActionRequestObject - - request.ActionId = actionId - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.DenyAction(ctx, request.(DenyActionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "DenyAction") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(DenyActionResponseObject); ok { - if err := validResponse.VisitDenyActionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ResolveAction operation middleware -func (sh *strictHandler) ResolveAction(w http.ResponseWriter, r *http.Request, actionId string) { - var request ResolveActionRequestObject - - request.ActionId = actionId - - var body ResolveActionJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - if !errors.Is(err, io.EOF) { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - } else { - request.Body = &body - } - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ResolveAction(ctx, request.(ResolveActionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ResolveAction") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ResolveActionResponseObject); ok { - if err := validResponse.VisitResolveActionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListAuditSessions operation middleware -func (sh *strictHandler) ListAuditSessions(w http.ResponseWriter, r *http.Request, params ListAuditSessionsParams) { - var request ListAuditSessionsRequestObject - - request.Params = params - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListAuditSessions(ctx, request.(ListAuditSessionsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListAuditSessions") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListAuditSessionsResponseObject); ok { - if err := validResponse.VisitListAuditSessionsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListAuditSignings operation middleware -func (sh *strictHandler) ListAuditSignings(w http.ResponseWriter, r *http.Request, params ListAuditSigningsParams) { - var request ListAuditSigningsRequestObject - - request.Params = params - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListAuditSignings(ctx, request.(ListAuditSigningsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListAuditSignings") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListAuditSigningsResponseObject); ok { - if err := validResponse.VisitListAuditSigningsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetAuditSigning operation middleware -func (sh *strictHandler) GetAuditSigning(w http.ResponseWriter, r *http.Request, id string) { - var request GetAuditSigningRequestObject - - request.Id = id - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetAuditSigning(ctx, request.(GetAuditSigningRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetAuditSigning") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetAuditSigningResponseObject); ok { - if err := validResponse.VisitGetAuditSigningResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetCurrentAccount operation middleware -func (sh *strictHandler) GetCurrentAccount(w http.ResponseWriter, r *http.Request) { - var request GetCurrentAccountRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetCurrentAccount(ctx, request.(GetCurrentAccountRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetCurrentAccount") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetCurrentAccountResponseObject); ok { - if err := validResponse.VisitGetCurrentAccountResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// UpdateCurrentAccount operation middleware -func (sh *strictHandler) UpdateCurrentAccount(w http.ResponseWriter, r *http.Request) { - var request UpdateCurrentAccountRequestObject - - var body UpdateCurrentAccountJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - if !errors.Is(err, io.EOF) { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - } else { - request.Body = &body - } - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.UpdateCurrentAccount(ctx, request.(UpdateCurrentAccountRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "UpdateCurrentAccount") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(UpdateCurrentAccountResponseObject); ok { - if err := validResponse.VisitUpdateCurrentAccountResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetPasskeyStatus operation middleware -func (sh *strictHandler) GetPasskeyStatus(w http.ResponseWriter, r *http.Request) { - var request GetPasskeyStatusRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetPasskeyStatus(ctx, request.(GetPasskeyStatusRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetPasskeyStatus") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetPasskeyStatusResponseObject); ok { - if err := validResponse.VisitGetPasskeyStatusResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// FinishAccountRegistration operation middleware -func (sh *strictHandler) FinishAccountRegistration(w http.ResponseWriter, r *http.Request) { - var request FinishAccountRegistrationRequestObject - - var body FinishAccountRegistrationJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.FinishAccountRegistration(ctx, request.(FinishAccountRegistrationRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "FinishAccountRegistration") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(FinishAccountRegistrationResponseObject); ok { - if err := validResponse.VisitFinishAccountRegistrationResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// StartAccountRegistration operation middleware -func (sh *strictHandler) StartAccountRegistration(w http.ResponseWriter, r *http.Request) { - var request StartAccountRegistrationRequestObject - - var body StartAccountRegistrationJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - if !errors.Is(err, io.EOF) { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - } else { - request.Body = &body - } - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.StartAccountRegistration(ctx, request.(StartAccountRegistrationRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "StartAccountRegistration") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(StartAccountRegistrationResponseObject); ok { - if err := validResponse.VisitStartAccountRegistrationResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListAuthorizedClients operation middleware -func (sh *strictHandler) ListAuthorizedClients(w http.ResponseWriter, r *http.Request) { - var request ListAuthorizedClientsRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListAuthorizedClients(ctx, request.(ListAuthorizedClientsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListAuthorizedClients") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListAuthorizedClientsResponseObject); ok { - if err := validResponse.VisitListAuthorizedClientsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// RevokeAllAuthorizedClients operation middleware -func (sh *strictHandler) RevokeAllAuthorizedClients(w http.ResponseWriter, r *http.Request, params RevokeAllAuthorizedClientsParams) { - var request RevokeAllAuthorizedClientsRequestObject - - request.Params = params - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.RevokeAllAuthorizedClients(ctx, request.(RevokeAllAuthorizedClientsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "RevokeAllAuthorizedClients") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(RevokeAllAuthorizedClientsResponseObject); ok { - if err := validResponse.VisitRevokeAllAuthorizedClientsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// RevokeAuthorizedClient operation middleware -func (sh *strictHandler) RevokeAuthorizedClient(w http.ResponseWriter, r *http.Request, clientId string, params RevokeAuthorizedClientParams) { - var request RevokeAuthorizedClientRequestObject - - request.ClientId = clientId - request.Params = params - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.RevokeAuthorizedClient(ctx, request.(RevokeAuthorizedClientRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "RevokeAuthorizedClient") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(RevokeAuthorizedClientResponseObject); ok { - if err := validResponse.VisitRevokeAuthorizedClientResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListEndpoints operation middleware -func (sh *strictHandler) ListEndpoints(w http.ResponseWriter, r *http.Request) { - var request ListEndpointsRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListEndpoints(ctx, request.(ListEndpointsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListEndpoints") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListEndpointsResponseObject); ok { - if err := validResponse.VisitListEndpointsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// CreateEndpoint operation middleware -func (sh *strictHandler) CreateEndpoint(w http.ResponseWriter, r *http.Request) { - var request CreateEndpointRequestObject - - var body CreateEndpointJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.CreateEndpoint(ctx, request.(CreateEndpointRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "CreateEndpoint") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(CreateEndpointResponseObject); ok { - if err := validResponse.VisitCreateEndpointResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// DeleteEndpoint operation middleware -func (sh *strictHandler) DeleteEndpoint(w http.ResponseWriter, r *http.Request, id string) { - var request DeleteEndpointRequestObject - - request.Id = id - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.DeleteEndpoint(ctx, request.(DeleteEndpointRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "DeleteEndpoint") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(DeleteEndpointResponseObject); ok { - if err := validResponse.VisitDeleteEndpointResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// UpdateEndpoint operation middleware -func (sh *strictHandler) UpdateEndpoint(w http.ResponseWriter, r *http.Request, id string) { - var request UpdateEndpointRequestObject - - request.Id = id - - var body UpdateEndpointJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - if !errors.Is(err, io.EOF) { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - } else { - request.Body = &body - } - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.UpdateEndpoint(ctx, request.(UpdateEndpointRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "UpdateEndpoint") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(UpdateEndpointResponseObject); ok { - if err := validResponse.VisitUpdateEndpointResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ApproveHydraConsent operation middleware -func (sh *strictHandler) ApproveHydraConsent(w http.ResponseWriter, r *http.Request) { - var request ApproveHydraConsentRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ApproveHydraConsent(ctx, request.(ApproveHydraConsentRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ApproveHydraConsent") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ApproveHydraConsentResponseObject); ok { - if err := validResponse.VisitApproveHydraConsentResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// StartHydraConsent operation middleware -func (sh *strictHandler) StartHydraConsent(w http.ResponseWriter, r *http.Request) { - var request StartHydraConsentRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.StartHydraConsent(ctx, request.(StartHydraConsentRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "StartHydraConsent") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(StartHydraConsentResponseObject); ok { - if err := validResponse.VisitStartHydraConsentResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// FinishHydraConsent operation middleware -func (sh *strictHandler) FinishHydraConsent(w http.ResponseWriter, r *http.Request) { - var request FinishHydraConsentRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.FinishHydraConsent(ctx, request.(FinishHydraConsentRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "FinishHydraConsent") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(FinishHydraConsentResponseObject); ok { - if err := validResponse.VisitFinishHydraConsentResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// StartHydraLogin operation middleware -func (sh *strictHandler) StartHydraLogin(w http.ResponseWriter, r *http.Request) { - var request StartHydraLoginRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.StartHydraLogin(ctx, request.(StartHydraLoginRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "StartHydraLogin") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(StartHydraLoginResponseObject); ok { - if err := validResponse.VisitStartHydraLoginResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// FinishHydraLogin operation middleware -func (sh *strictHandler) FinishHydraLogin(w http.ResponseWriter, r *http.Request) { - var request FinishHydraLoginRequestObject - - var body FinishHydraLoginJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - if !errors.Is(err, io.EOF) { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - } else { - request.Body = &body - } - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.FinishHydraLogin(ctx, request.(FinishHydraLoginRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "FinishHydraLogin") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(FinishHydraLoginResponseObject); ok { - if err := validResponse.VisitFinishHydraLoginResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// RegisterOauthClient operation middleware -func (sh *strictHandler) RegisterOauthClient(w http.ResponseWriter, r *http.Request) { - var request RegisterOauthClientRequestObject - - var body RegisterOauthClientJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.RegisterOauthClient(ctx, request.(RegisterOauthClientRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "RegisterOauthClient") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(RegisterOauthClientResponseObject); ok { - if err := validResponse.VisitRegisterOauthClientResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListSshKeys operation middleware -func (sh *strictHandler) ListSshKeys(w http.ResponseWriter, r *http.Request) { - var request ListSshKeysRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListSshKeys(ctx, request.(ListSshKeysRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListSshKeys") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListSshKeysResponseObject); ok { - if err := validResponse.VisitListSshKeysResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// FinishInvitePasskeyRegistration operation middleware -func (sh *strictHandler) FinishInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) { - var request FinishInvitePasskeyRegistrationRequestObject - - var body FinishInvitePasskeyRegistrationJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.FinishInvitePasskeyRegistration(ctx, request.(FinishInvitePasskeyRegistrationRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "FinishInvitePasskeyRegistration") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(FinishInvitePasskeyRegistrationResponseObject); ok { - if err := validResponse.VisitFinishInvitePasskeyRegistrationResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// StartInvitePasskeyRegistration operation middleware -func (sh *strictHandler) StartInvitePasskeyRegistration(w http.ResponseWriter, r *http.Request) { - var request StartInvitePasskeyRegistrationRequestObject - - var body StartInvitePasskeyRegistrationJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.StartInvitePasskeyRegistration(ctx, request.(StartInvitePasskeyRegistrationRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "StartInvitePasskeyRegistration") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(StartInvitePasskeyRegistrationResponseObject); ok { - if err := validResponse.VisitStartInvitePasskeyRegistrationResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetPasskeyInviteByToken operation middleware -func (sh *strictHandler) GetPasskeyInviteByToken(w http.ResponseWriter, r *http.Request, token string) { - var request GetPasskeyInviteByTokenRequestObject - - request.Token = token - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetPasskeyInviteByToken(ctx, request.(GetPasskeyInviteByTokenRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetPasskeyInviteByToken") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetPasskeyInviteByTokenResponseObject); ok { - if err := validResponse.VisitGetPasskeyInviteByTokenResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// DeletePushSubscription operation middleware -func (sh *strictHandler) DeletePushSubscription(w http.ResponseWriter, r *http.Request) { - var request DeletePushSubscriptionRequestObject - - var body DeletePushSubscriptionJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.DeletePushSubscription(ctx, request.(DeletePushSubscriptionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "DeletePushSubscription") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(DeletePushSubscriptionResponseObject); ok { - if err := validResponse.VisitDeletePushSubscriptionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// CreatePushSubscription operation middleware -func (sh *strictHandler) CreatePushSubscription(w http.ResponseWriter, r *http.Request) { - var request CreatePushSubscriptionRequestObject - - var body CreatePushSubscriptionJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.CreatePushSubscription(ctx, request.(CreatePushSubscriptionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "CreatePushSubscription") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(CreatePushSubscriptionResponseObject); ok { - if err := validResponse.VisitCreatePushSubscriptionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListSessions operation middleware -func (sh *strictHandler) ListSessions(w http.ResponseWriter, r *http.Request) { - var request ListSessionsRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListSessions(ctx, request.(ListSessionsRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListSessions") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListSessionsResponseObject); ok { - if err := validResponse.VisitListSessionsResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// CreateSession operation middleware -func (sh *strictHandler) CreateSession(w http.ResponseWriter, r *http.Request) { - var request CreateSessionRequestObject - - var body CreateSessionJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.CreateSession(ctx, request.(CreateSessionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "CreateSession") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(CreateSessionResponseObject); ok { - if err := validResponse.VisitCreateSessionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// CloseSession operation middleware -func (sh *strictHandler) CloseSession(w http.ResponseWriter, r *http.Request, sessionId string) { - var request CloseSessionRequestObject - - request.SessionId = sessionId - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.CloseSession(ctx, request.(CloseSessionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "CloseSession") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(CloseSessionResponseObject); ok { - if err := validResponse.VisitCloseSessionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetSessionTail operation middleware -func (sh *strictHandler) GetSessionTail(w http.ResponseWriter, r *http.Request, sessionId string, params GetSessionTailParams) { - var request GetSessionTailRequestObject - - request.SessionId = sessionId - request.Params = params - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetSessionTail(ctx, request.(GetSessionTailRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetSessionTail") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetSessionTailResponseObject); ok { - if err := validResponse.VisitGetSessionTailResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetVersion operation middleware -func (sh *strictHandler) GetVersion(w http.ResponseWriter, r *http.Request) { - var request GetVersionRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetVersion(ctx, request.(GetVersionRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetVersion") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetVersionResponseObject); ok { - if err := validResponse.VisitGetVersionResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ListPasskeys operation middleware -func (sh *strictHandler) ListPasskeys(w http.ResponseWriter, r *http.Request) { - var request ListPasskeysRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ListPasskeys(ctx, request.(ListPasskeysRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ListPasskeys") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ListPasskeysResponseObject); ok { - if err := validResponse.VisitListPasskeysResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// ConfirmPasskey operation middleware -func (sh *strictHandler) ConfirmPasskey(w http.ResponseWriter, r *http.Request, id string, params ConfirmPasskeyParams) { - var request ConfirmPasskeyRequestObject - - request.Id = id - request.Params = params - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.ConfirmPasskey(ctx, request.(ConfirmPasskeyRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "ConfirmPasskey") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(ConfirmPasskeyResponseObject); ok { - if err := validResponse.VisitConfirmPasskeyResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// UpdatePasskeyLabel operation middleware -func (sh *strictHandler) UpdatePasskeyLabel(w http.ResponseWriter, r *http.Request, id string) { - var request UpdatePasskeyLabelRequestObject - - request.Id = id - - var body UpdatePasskeyLabelJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.UpdatePasskeyLabel(ctx, request.(UpdatePasskeyLabelRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "UpdatePasskeyLabel") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(UpdatePasskeyLabelResponseObject); ok { - if err := validResponse.VisitUpdatePasskeyLabelResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// RevokePasskey operation middleware -func (sh *strictHandler) RevokePasskey(w http.ResponseWriter, r *http.Request, id string, params RevokePasskeyParams) { - var request RevokePasskeyRequestObject - - request.Id = id - request.Params = params - - var body RevokePasskeyJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - if !errors.Is(err, io.EOF) { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - } else { - request.Body = &body - } - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.RevokePasskey(ctx, request.(RevokePasskeyRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "RevokePasskey") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(RevokePasskeyResponseObject); ok { - if err := validResponse.VisitRevokePasskeyResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetPasskeyInvite operation middleware -func (sh *strictHandler) GetPasskeyInvite(w http.ResponseWriter, r *http.Request) { - var request GetPasskeyInviteRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetPasskeyInvite(ctx, request.(GetPasskeyInviteRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetPasskeyInvite") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetPasskeyInviteResponseObject); ok { - if err := validResponse.VisitGetPasskeyInviteResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// CreatePasskeyInvite operation middleware -func (sh *strictHandler) CreatePasskeyInvite(w http.ResponseWriter, r *http.Request) { - var request CreatePasskeyInviteRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.CreatePasskeyInvite(ctx, request.(CreatePasskeyInviteRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "CreatePasskeyInvite") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(CreatePasskeyInviteResponseObject); ok { - if err := validResponse.VisitCreatePasskeyInviteResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// FinishPasskeyRegistration operation middleware -func (sh *strictHandler) FinishPasskeyRegistration(w http.ResponseWriter, r *http.Request, params FinishPasskeyRegistrationParams) { - var request FinishPasskeyRegistrationRequestObject - - request.Params = params - - var body FinishPasskeyRegistrationJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.FinishPasskeyRegistration(ctx, request.(FinishPasskeyRegistrationRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "FinishPasskeyRegistration") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(FinishPasskeyRegistrationResponseObject); ok { - if err := validResponse.VisitFinishPasskeyRegistrationResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// StartPasskeyRegistration operation middleware -func (sh *strictHandler) StartPasskeyRegistration(w http.ResponseWriter, r *http.Request) { - var request StartPasskeyRegistrationRequestObject - - var body StartPasskeyRegistrationJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.StartPasskeyRegistration(ctx, request.(StartPasskeyRegistrationRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "StartPasskeyRegistration") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(StartPasskeyRegistrationResponseObject); ok { - if err := validResponse.VisitStartPasskeyRegistrationResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// StartStepUp operation middleware -func (sh *strictHandler) StartStepUp(w http.ResponseWriter, r *http.Request) { - var request StartStepUpRequestObject - - var body StartStepUpJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.StartStepUp(ctx, request.(StartStepUpRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "StartStepUp") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(StartStepUpResponseObject); ok { - if err := validResponse.VisitStartStepUpResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// FinishStepUp operation middleware -func (sh *strictHandler) FinishStepUp(w http.ResponseWriter, r *http.Request) { - var request FinishStepUpRequestObject - - var body FinishStepUpJSONRequestBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - sh.options.RequestErrorHandlerFunc(w, r, fmt.Errorf("can't decode JSON body: %w", err)) - return - } - request.Body = &body - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.FinishStepUp(ctx, request.(FinishStepUpRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "FinishStepUp") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(FinishStepUpResponseObject); ok { - if err := validResponse.VisitFinishStepUpResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetConfigScript operation middleware -func (sh *strictHandler) GetConfigScript(w http.ResponseWriter, r *http.Request) { - var request GetConfigScriptRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetConfigScript(ctx, request.(GetConfigScriptRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetConfigScript") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetConfigScriptResponseObject); ok { - if err := validResponse.VisitGetConfigScriptResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} - -// GetHealth operation middleware -func (sh *strictHandler) GetHealth(w http.ResponseWriter, r *http.Request) { - var request GetHealthRequestObject - - handler := func(ctx context.Context, w http.ResponseWriter, r *http.Request, request interface{}) (interface{}, error) { - return sh.ssi.GetHealth(ctx, request.(GetHealthRequestObject)) - } - for _, middleware := range sh.middlewares { - handler = middleware(handler, "GetHealth") - } - - response, err := handler(r.Context(), w, r, request) - - if err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } else if validResponse, ok := response.(GetHealthResponseObject); ok { - if err := validResponse.VisitGetHealthResponse(w); err != nil { - sh.options.ResponseErrorHandlerFunc(w, r, err) - } - } else if response != nil { - sh.options.ResponseErrorHandlerFunc(w, r, fmt.Errorf("unexpected response type: %T", response)) - } -} diff --git a/internal/api/generate.go b/internal/api/generate.go index 2b849d1..8cebe3f 100644 --- a/internal/api/generate.go +++ b/internal/api/generate.go @@ -1,7 +1,9 @@ // SPDX-License-Identifier: LicenseRef-FSL-1.1-Apache-2.0 -// Package api is the generated REST surface of the frozen wire contract -// (docs/api/openapi.yaml). Do not edit api.gen.go — regenerate with -// `go generate ./internal/api` and commit the result; CI fails on drift. +// Package api holds the generated model types of the frozen wire contract +// (docs/api/openapi.yaml). internal/rest marshals these types, so response +// shapes are compile-checked against the spec. Do not edit api.gen.go — +// regenerate with `go generate ./internal/api` and commit the result; CI +// fails on drift. package api //go:generate go run github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@v2.7.1 -config ../../docs/api/oapi-codegen.yaml -o api.gen.go ../../docs/api/openapi.yaml diff --git a/internal/httpserver/server.go b/internal/httpserver/server.go index aa097ea..00823c5 100644 --- a/internal/httpserver/server.go +++ b/internal/httpserver/server.go @@ -1,8 +1,8 @@ // SPDX-License-Identifier: LicenseRef-FSL-1.1-Apache-2.0 // Package httpserver assembles the chi router: middleware stack (bearer // gate, IP allowlist for /mcp), the stateless meta endpoints, discovery -// docs, and SPA static serving. Handlers implementing the generated -// api.StrictServerInterface mount here as later Phase 2-5 slices land. +// docs, and SPA static serving. The hand-written REST handlers +// (internal/rest, marshaling internal/api model types) mount here. package httpserver import ( From 858bc524b7dfc7e85a7e74facca01e256b0e741f Mon Sep 17 00:00:00 2001 From: Martin Riedel <1713643+rado0x54@users.noreply.github.com> Date: Sun, 12 Jul 2026 10:13:15 +0200 Subject: [PATCH 2/2] =?UTF-8?q?refactor(go):=20rest=20handlers=20marshal?= =?UTF-8?q?=20generated=20api=20model=20types=20=E2=80=94=20sessionDTO/end?= =?UTF-8?q?pointDTO/authSessionView=20+=20status=20envelopes=20replaced,?= =?UTF-8?q?=20response=20shapes=20now=20compile-checked=20against=20the=20?= =?UTF-8?q?frozen=20spec?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/rest/authsessions.go | 18 ++++---------- internal/rest/endpoints.go | 43 +++++++++++++-------------------- internal/rest/sessions.go | 45 ++++++++++++----------------------- 3 files changed, 36 insertions(+), 70 deletions(-) diff --git a/internal/rest/authsessions.go b/internal/rest/authsessions.go index 39e477a..9dee296 100644 --- a/internal/rest/authsessions.go +++ b/internal/rest/authsessions.go @@ -11,6 +11,7 @@ import ( "github.com/go-chi/chi/v5" + "github.com/rado0x54/shellwatch/internal/api" "github.com/rado0x54/shellwatch/internal/hydra" "github.com/rado0x54/shellwatch/internal/webauthn" ) @@ -37,15 +38,6 @@ func (a *AuthSessions) Mount(r chi.Router) { Post("/api/auth/sessions/revoke-all", a.revokeAll) } -type authSessionView struct { - ClientID string `json:"clientId"` - ClientName string `json:"clientName"` - Scopes []string `json:"scopes"` - AuthorizedAt *string `json:"authorizedAt"` - CreatedAt *string `json:"createdAt"` - Current bool `json:"current"` -} - func (a *AuthSessions) list(w http.ResponseWriter, r *http.Request) { acct := accountID(r) sessions, err := a.Admin.ListConsentSessions(r.Context(), acct) @@ -54,7 +46,7 @@ func (a *AuthSessions) list(w http.ResponseWriter, r *http.Request) { return } // Collapse to one row per client_id, keeping the most recently handled grant. - byClient := map[string]authSessionView{} + byClient := map[string]api.AuthSessionView{} for _, s := range sessions { if s.ConsentRequest == nil { continue @@ -77,13 +69,13 @@ func (a *AuthSessions) list(w http.ResponseWriter, r *http.Request) { if scopes == nil { scopes = []string{} } - byClient[client.ClientID] = authSessionView{ - ClientID: client.ClientID, ClientName: name, Scopes: scopes, + byClient[client.ClientID] = api.AuthSessionView{ + ClientId: client.ClientID, ClientName: name, Scopes: scopes, AuthorizedAt: handledAt, CreatedAt: nzp(client.CreatedAt), Current: client.ClientID == a.SPAClientID, } } - list := make([]authSessionView, 0, len(byClient)) + list := make([]api.AuthSessionView, 0, len(byClient)) for _, v := range byClient { list = append(list, v) } diff --git a/internal/rest/endpoints.go b/internal/rest/endpoints.go index 3de150c..3dc3ecd 100644 --- a/internal/rest/endpoints.go +++ b/internal/rest/endpoints.go @@ -1,11 +1,11 @@ // SPDX-License-Identifier: LicenseRef-FSL-1.1-Apache-2.0 // Package rest holds the account-scoped REST handlers (port of -// src/server/routes/). Slice 1 is endpoints CRUD; sessions/keys follow. -// Validation, error wording, and response envelopes match Node exactly -// (pinned by endpoints-* and err-400-endpoint-* goldens). Handlers are -// hand-mounted on chi; the generated api.StrictServerInterface is adopted as -// a later refactor once every surface exists (a converge-later item, like the -// A-J inconsistencies). +// src/server/routes/). Validation, error wording, and response envelopes +// match Node exactly (pinned by endpoints-* and err-400-endpoint-* goldens). +// Handlers are hand-mounted on chi and marshal the generated model types +// (internal/api) where the spec models the body, so response shapes are +// compile-checked against the frozen contract; goldens remain the value-level +// oracle. package rest import ( @@ -15,6 +15,7 @@ import ( "github.com/go-chi/chi/v5" + "github.com/rado0x54/shellwatch/internal/api" "github.com/rado0x54/shellwatch/internal/demo" "github.com/rado0x54/shellwatch/internal/store" ) @@ -55,23 +56,11 @@ func (e *Endpoints) Mount(r chi.Router) { r.Delete("/api/endpoints/{id}", e.delete) } -type endpointDTO struct { - ID string `json:"id"` - Label string `json:"label"` - Host string `json:"host"` - Port int64 `json:"port"` - Username string `json:"username"` - UserVerification string `json:"userVerification"` - AgentForward bool `json:"agentForward"` - Description *string `json:"description"` - IsDemo bool `json:"isDemo"` -} - -func toDTO(ep store.Endpoint, isDemo bool) endpointDTO { - return endpointDTO{ - ID: ep.ID, Label: ep.Label, Host: ep.Host, Port: ep.Port, Username: ep.Username, - UserVerification: ep.UserVerification, AgentForward: ep.AgentForward, - Description: ep.Description, IsDemo: isDemo, +func toDTO(ep store.Endpoint, isDemo bool) api.Endpoint { + return api.Endpoint{ + Id: ep.ID, Label: ep.Label, Host: ep.Host, Port: int(ep.Port), Username: ep.Username, + UserVerification: api.EndpointUserVerification(ep.UserVerification), + AgentForward: ep.AgentForward, Description: ep.Description, IsDemo: isDemo, } } @@ -82,7 +71,7 @@ func (e *Endpoints) list(w http.ResponseWriter, r *http.Request) { writeErr(w, 500, "internal error") return } - out := make([]endpointDTO, 0, len(own)) + out := make([]api.Endpoint, 0, len(own)) for _, ep := range own { out = append(out, toDTO(ep, false)) } @@ -143,7 +132,7 @@ func (e *Endpoints) create(w http.ResponseWriter, r *http.Request) { writeErr(w, 400, err.Error()) return } - writeJSON(w, 200, map[string]any{"status": "created", "id": id}) + writeJSON(w, 200, api.StatusCreated{Status: api.Created, Id: id}) } func (e *Endpoints) update(w http.ResponseWriter, r *http.Request) { @@ -207,7 +196,7 @@ func (e *Endpoints) update(w http.ResponseWriter, r *http.Request) { writeErr(w, 400, err.Error()) return } - writeJSON(w, 200, map[string]any{"status": "updated"}) + writeJSON(w, 200, api.StatusUpdated{Status: api.Updated}) } func (e *Endpoints) delete(w http.ResponseWriter, r *http.Request) { @@ -228,7 +217,7 @@ func (e *Endpoints) delete(w http.ResponseWriter, r *http.Request) { writeErr(w, 400, err.Error()) return } - writeJSON(w, 200, map[string]any{"status": "deleted"}) + writeJSON(w, 200, api.StatusDeleted{Status: api.Deleted}) } // normalizeDescription mirrors normalizeDescription in endpoints.ts: tri-state diff --git a/internal/rest/sessions.go b/internal/rest/sessions.go index b46ffcd..d627eb8 100644 --- a/internal/rest/sessions.go +++ b/internal/rest/sessions.go @@ -13,6 +13,7 @@ import ( "github.com/go-chi/chi/v5" + "github.com/rado0x54/shellwatch/internal/api" "github.com/rado0x54/shellwatch/internal/demo" "github.com/rado0x54/shellwatch/internal/realip" "github.com/rado0x54/shellwatch/internal/store" @@ -35,36 +36,20 @@ func (s *Sessions) Mount(r chi.Router) { r.Delete("/api/sessions/{sessionId}", s.close) } -// sessionDTO is the bare TerminalSession wire shape. Optional fields omit -// when empty (matching the conditional spread in terminal-manager.ts). -type sessionDTO struct { - SessionID string `json:"sessionId"` - EndpointID string `json:"endpointId"` - AccountID string `json:"accountId"` - Status string `json:"status"` - CreatedAt string `json:"createdAt"` - LastActivityAt string `json:"lastActivityAt"` - Source string `json:"source"` - CloseReason *string `json:"closeReason,omitempty"` - SourceIP *string `json:"sourceIp,omitempty"` - MCPReason *string `json:"mcpReason,omitempty"` - MCPClientName *string `json:"mcpClientName,omitempty"` - MCPClientVer *string `json:"mcpClientVersion,omitempty"` -} - -func toSessionDTO(s terminal.Session) sessionDTO { - d := sessionDTO{ - SessionID: s.SessionID, EndpointID: s.EndpointID, AccountID: s.AccountID, - Status: string(s.Status), Source: string(s.Source), - CreatedAt: s.CreatedAt.UTC().Format(isoMillis), - LastActivityAt: s.LastActivityAt.UTC().Format(isoMillis), +// toSessionDTO builds the bare TerminalSession wire shape. Optional fields +// omit when empty (matching the conditional spread in terminal-manager.ts). +func toSessionDTO(s terminal.Session) api.TerminalSession { + return api.TerminalSession{ + SessionId: s.SessionID, EndpointId: s.EndpointID, AccountId: s.AccountID, + Status: api.TerminalStatus(s.Status), Source: api.TerminalSource(s.Source), + CreatedAt: s.CreatedAt.UTC().Format(isoMillis), + LastActivityAt: s.LastActivityAt.UTC().Format(isoMillis), + CloseReason: strPtrIf(string(s.CloseReason)), + SourceIp: strPtrIf(s.SourceIP), + McpReason: strPtrIf(s.MCPReason), + McpClientName: strPtrIf(s.MCPClientName), + McpClientVersion: strPtrIf(s.MCPClientVer), } - d.CloseReason = strPtrIf(string(s.CloseReason)) - d.SourceIP = strPtrIf(s.SourceIP) - d.MCPReason = strPtrIf(s.MCPReason) - d.MCPClientName = strPtrIf(s.MCPClientName) - d.MCPClientVer = strPtrIf(s.MCPClientVer) - return d } func (s *Sessions) create(w http.ResponseWriter, r *http.Request) { @@ -132,7 +117,7 @@ func toRef(e store.Endpoint) terminal.EndpointRef { func (s *Sessions) list(w http.ResponseWriter, r *http.Request) { sessions := s.Manager.ListForAccount(accountID(r)) - out := make([]sessionDTO, 0, len(sessions)) + out := make([]api.TerminalSession, 0, len(sessions)) for _, sess := range sessions { out = append(out, toSessionDTO(sess)) }