Commit Graph
1289 Commits
Author SHA1 Message Date
Kevin f63ce7cecc Implement auth checks for RBAC rule review_requests.submit_for_users (#66230) 2026-06-09 20:11:23 +00:00
Marek Smoliński 5cee7e2c7a SCIM: Add rate limit proto settings (#66826) 2026-06-09 13:06:45 +00:00
Tiago Silva 679d627839 Fix tctl recordings search pagination and surface fetch errors (#67545)
"Load more" in the recordings search TUI (and --resume-token) failed with
"start_time is required" after the latest access graph update.
Follow-up pages were sent with only the batch_token, relying on the
proto comment that claimed all other filter fields are ignored
once batch_token is set. That contract is wrong: the server validates
and applies start_time/end_time and every other filter on each request,
and the access graph re-checks that the checkpoint falls
within the requested time range.

The batch token is intentionally only a cursor and does not carry the full
search state - encoding every filter into the token would let it grow to
very large sizes. So the original request must be replayed with the
batch_token set on each page. Build the request once and have the fetcher
clone it and attach the token for the initial page, resume, and load-more,
fixing both the TUI and --resume-token.

Also surface the fetch error back to the user: a failed "load more" now
opens a popup with a red header and the server message rendered as code,
instead of silently swallowing the error behind a "(retry)" label.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2026-06-08 12:10:40 +00:00
Noah Stride 1ee27077d8 Migrate Delete and UpsertTunnelConnection RPCs from HTTP to gRPC (#65935)
* wip: http->grpc for Delete and Upsert tunnel connection

* Properly return the updated tc with revision

* Add admin actions mfa and fix tests

* Add trace.Wrap for http fallback path
2026-06-04 09:14:30 +00:00
Alan Parra e71f2d11a4 Update Sub CA proto comments (#67390)
* Document that public_key_hash_to_crl keys are lowercased

* Fix pseudocode on DatabaseCertResponse

* make grpc
2026-06-03 13:25:19 +00:00
nixpig 1ddf9b4ffe Add processing status to Okta assignment targets (#67303)
* Add types and API for Okta assignment target status

* Add status fields to resource output

* Validate args for RecordStatus

* Update tests for RecordStatus errors

* Tidy up

* Remove tctl changes to put in separate PR
2026-06-03 08:08:38 +00:00
Nic Klaassen 6eea6c422b feat: add scope info to event user metadata (#67343)
* add scope info to event user metadata

* TestTrimToMaxSize: use short string in all nested metadata fields
2026-06-03 00:18:29 +00:00
Maja Cieślak d6e0e5a208 Update protos to enable syncing iOS/iPadOS devices through MDM integrations (#65834)
* Add iOS and iPadOS as new OSType values

* lib/msgraph: Add `Model` field back to `ManagedDevice`

We need it to differentiate between iPhones and iPads in e/lib/intune.

* Add device_type to JamfInventoryEntry

* Use a separate block for computer types

* Add godoc and examples for `ManagedDevice.Model`

* Add os_types to SyncInventoryStart
2026-06-02 13:08:26 +00:00
STeve (Xin) Huang 6c1e6e2588 [beams] global beams_config proto (#66800)
* [beams] global beams_config proto

* update config description

* update description
2026-06-01 13:11:36 +00:00
Yassine Bounekhla c28001c8c9 Add web_terminal_copy_mode role option (#66597)
* add web terminal copy mode role option

* CR
2026-05-28 19:58:49 +00:00
Travis LaDuke 0394d3e4a5 UI interaction events protos (#66372)
* Add ui interaction event protos

* make grpc

* Add userEventService method

* Fix signature

* Fix username field

it would have been logging the hash of ""
2026-05-28 18:36:15 +00:00
Forrest 87f8a28487 scoped agent pins (#66590) 2026-05-28 15:48:36 +00:00
Noah Stride 1bb374784b Convert (Upsert/Delete)Proxy RPC from HTTP to gRPC (#66124)
* Convert DeleteProxy RPC from HTTP to gRPC

* Use `t.Context()`

* Add more greppable TODO

* Fix usage of deprecated rpc

* Upsert RPC

* Use wrapper message for UpsertResponse

* gofmt

* Simplify godoc

* Update response message

* Update method names on public api client

* fix tests

* Introduce UpsertProxyWithoutServer

* Edoardo comments

* separate

* Change to UpsertProxyServer RPC handler
2026-05-28 07:59:00 +00:00
Chris Thach c46a8f5f14 Migrate MFA service from v1 to v2 (#66820)
* Migrate from mfa v1 to v2.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

* Set deprecated proto option and update migration comment.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

* Reduce nolint directives.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

* Tag Ryan for the Desktop TODO.

---------

Signed-off-by: Chris Thach <chris.thach@goteleport.com>
2026-05-22 18:49:20 +00:00
Chris Thach 600b42bdfa Add mfav2.ValidatedMFAChallenge to event.proto. (#66872)
Signed-off-by: Chris Thach <chris.thach@goteleport.com>
2026-05-20 20:12:58 +00:00
Alan Parra d99dc46cf6 Add TrustChain and CAOverrideDetails to DB Access protos (#66767)
* Add TrustChain and CAOverrideDetails to DB Access protos

* make grpc
2026-05-20 13:27:47 +00:00
70257f28dc Add HiDPI display support for desktop sessions (#64160)
* Reduce WASM log level from TRACE to WARN in development

* Add HiDPI display support for desktop sessions

* rustfmt

* Update Monitor.tsx

Co-authored-by: Dan Share <10600907+danielashare@users.noreply.github.com>

* Update codec.ts

Co-authored-by: rhammonds-teleport <ryan.hammonds@goteleport.com>

* UI updates

* Remove unused import

* pnpm format

* Fix popover not repositioning when window is resized

* Watch for DPR changes

* Add settings UI to connect

* Fix types

* Remove monitor icon

---------

Co-authored-by: Dan Share <10600907+danielashare@users.noreply.github.com>
Co-authored-by: rhammonds-teleport <ryan.hammonds@goteleport.com>
2026-05-20 12:55:27 +00:00
Gabriel CoradoandNoah Stride c5cb5c8cd6 Add IssueTeleportWorkloadIdentity RPC (#66691)
* feat(workloadidentityv1): issue teleport workload identity

* refactor(workloadidentityv1): code review suggestions

* refactor(workloadidentityv1): code review suggestions

* chore(workloadidentityv1): clarify comment

* Apply suggestions from code review

Co-authored-by: Noah Stride <noah@noahstride.co.uk>

* chore(workloadidentityv1): code review suggestions and update

---------

Co-authored-by: Noah Stride <noah@noahstride.co.uk>
2026-05-20 01:52:10 +00:00
williamong-tel 7629b951d4 Add scope support to OpenSSH nodes (#64819)
* Add scope support to OpenSSH certificate generation

simplify scopes open ssh connection

Add DeviceVerified and isBot in the signer

tweak signer to be lazily referenced

revert adding login to client

Pass in targetServer to the OpenSSHCertRequest instead - use CheckAccessToSSHServer to check if scoped role has access

Respond to pr review

Changed signature of DialHost to use a struct before it gets too big

Changed requestedHostLogin to login and targetnodescope to targetserverscope

fix build

Update auth_with_roles.go

Update split_access_checker.go

Update agentless.go

Update auth.go

fix test

Update authservice.pb.go

move cert gen

alias auth proto instead and update the test error expectation

rename goproto go googleproto for better readability - address pr feedback

Update integration_test.go

test

fix build

revert merge conflict for applyTraits

Switch to using pinning package to marshal/unmarshal

* respond to PR review

* updated the need for a agents to upsert node

* revert permissions.go change for upserting node

Update auth_with_roles.go

* set gogo proto options to false for openSSHCertRequest so that we can import teleport.scoped.v1.Pin

Update authservice.pb.go

* Add node ID check in upsertNode

* fix test structure

Update auth_with_roles_test.go
2026-05-19 18:41:29 +00:00
williamong-tel 6500619d93 Add disconnect expired cert and lock mode for scoped role (#66376)
* Add disconnect expired cert and lock mode for scoped role

Update IAC docs

* respond to code review

Add a scoped authorizer in the forwarder_test

fix up proto comments

Update forwarder.go

* fix forwarder setting nil disconnectExpiredCert

* Update validate lock to accept empty string - will be treated as best_effort down the line

add comment
2026-05-14 21:51:48 +00:00
Chris Thach c12fcaabc6 Add mfa v2 and webauthn v2 protos and gen Go bindings. (#66643)
Signed-off-by: Chris Thach <chris.thach@goteleport.com>
2026-05-14 13:01:44 +00:00
Zac Bergquist 23716c4d8a Prevent the LDAP reconciler from picking up dynamic desktops (#66609)
Prior to this change, users who manually register dynamic desktops
using the same labels that the LDAP reconciler uses could trick
the reconciler into managing desktops that it shouldn't own.

Additionally, the LDAP reconciler would pull all desktops from
the backend, including the dynamically registered ones. Since
these dynamic desktops aren't found in LDAP, the reconciler
woudl think they are stale and incorrectly delete them.

Use a new status field (because changing teleport.dev/origin is unsafe)
in order to indicate desktops managed by LDAP. This ensures that
the LDAP reconciler operates only on LDAP-managed hosts.
2026-05-14 02:31:49 +00:00
Noah Stride 1894178df3 Wildcard support for kubernetes join method (#66520)
* Add protos

* implement validation and matching support

* generated integrations stuff

* De Morgan, and his faithful followers, have once again defeated me in battle

* Udpate tests in lib/kube/token

* Extend join_kubernetes_test.go

* Fix missing param

* Extend validation tests

* Fix minor nits

* qF1001: CoUld aPpLY de MORgan'S LaW (stAticCHEck)
2026-05-13 08:47:24 +00:00
Kevin 25390e35ad Extend access_request.review audit event with SubmittedBy field (#66555)
* Add `AccessRequestCreate.SubmittedBy` field

* Address feedback
2026-05-12 17:18:29 +00:00
Ryan Clark 75d317b264 Add session event to enhanced summaries for desktop + other recording type events (#66527)
* Add session event to enhanced summaries for desktop + other recording type events

* Add more comments to proto

* Fix proto numbers

* Handle deprecation in recording TUI
2026-05-12 12:26:59 +00:00
williamong-tel 947cb73f0c add enhanced session recording and session recording mode for scoped roles (#65996) 2026-05-11 22:37:12 +00:00
rhammonds-teleportandPrzemko Robakowski a1067af54b Desktop Access: Fix Shared Directory Truncate Error (#66307)
* Change 'EndOfFile' property to int64 from uint32

* Plumb the new int64 'EndOfFile' field through the rest of the backend and client

* Switch 'size' field of truncate requests to uint64 instead of int64

* Update everything downstream of the new uint64 'size' field

* Update lib/srv/desktop/tdp/protocol/tdpb/translate.go

Co-authored-by: Przemko Robakowski <przemko.robakowski@goteleport.com>

---------

Co-authored-by: Przemko Robakowski <przemko.robakowski@goteleport.com>
2026-05-11 17:18:42 +00:00
Chris Thach 9a77c5b3ce Fix headless login when in-band MFA is required (#66168)
* Fix headless login when in-band MFA is required.

* Set HeadlessAuthenticationID in headless cert and allow bypass of in-band MFA if set.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

* Update proto to fix test.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

* Delete useless assert.

Signed-off-by: Chris Thach <chris.thach@goteleport.com>

---------

Signed-off-by: Chris Thach <chris.thach@goteleport.com>
2026-05-08 17:25:55 +00:00
Michelle Bergquist 351521258f Add audit event for environment profile (#66217)
* Add audit event for environment profile

* Enforce that new event codes are registered in the web audit UI

Add TestEventCodesInWebTypes, a Go test that cross-checks every code defined in lib/events/codes.go against the eventCodes map in web/packages/teleport/src/services/audit/types.ts. Without an entry there, events appear as "Unknown" in the audit log UI.

A knownMissing set exempts 14 pre-existing gaps that predate the test; those should be fixed in follow-up PRs and removed from the list.

* Add web audit UI entries for environment profile update event
2026-05-07 21:36:21 +00:00
Kevin 4dcfcc608f Add RBAC rule review_requests.submit_for_users (#66254) 2026-05-07 20:49:43 +00:00
Nick Marais 068fa4a213 feat: Preparation for Beams list (web ui) (#66287)
* Add beam list sorting

* ACL for beams

* Add `BeamServiceClient` to api client

* Use correct expires field for sorting

* Use case-insensitive sorting for user/owner

* Fix service client comment

* Refactor index selection

* Refactor backend sort validation

* Use enums for sort field and order

* Handle nil spec.expires at key creation

* Encode uft8-unsafe page tokens

* Fix tests naming

* Apply filters in backend `IterateBeams`

* Rename `ListBeamsRequestOptions.GetFilterOwners`

* Fix yield

* Tweak len access

* Always base32 encode page tokens

* Use bytestring type

* Don't use `IterateBeams` in `ListBeams`

`pageSize` was not propagated to the lister

* Add missing error checks

* Revert unnecessary comment change

* Make `IterateBeams` backwards compatible with teleport.e

* Make `ListBeams` backwards compatible with teleport.e

* Don't lower user name for cache index keys

* Godoc for MakeBeamFilterFunc

* Deny user acl for beams without entitlement

* Comment sorting validation in backend

* Encode page token only when required

* Remove upper bound on page size

* Decode page tokens in IterateBeams
2026-05-07 17:54:49 +00:00
Adam Pickering e2dadc573e Remove redundant database configuration references in docs (#66447)
* Remove redundant database configuration references

This:
1. Adds documentation for the mysql_server_version field of proxy_service
   to the general config reference and improves formatting for a couple
   of fields there.
2. Removes database config/resource references that are redundant due to
   being covered by auto-generated docs or the more centralized teleport
   config docs.

* Update docs redirects

* Update internal links pointing to deleted pages

* Update DatabaseSpecV3.Protocol comment with allowed database protocol types

- This PR is removing the old `db` resource reference.
- The new `db` resource reference is generated from the DatabaseV3
  protobuf type.
- The old `db` resource reference defined the allowed values of the
  protocol field, whereas this information is not in the `DatabaseV3` type.
- docs/pages/identity-security/session-summaries.mdx links to the `db`
  resource reference, using it as a source of information on which values
  are allowed for the protocol field.

Therefore, we must update the DatabaseV3 protobuf type with information
on which values are allowed for the protocol field.
2026-05-07 17:44:48 +00:00
Dustin Specker 45e9168701 remove workload cluster cache (#65474)
* Revert "Add cache support for workload cluster (#62866)"

This reverts commit bc3ef9078e.

* fix(api/proto): reserve WorkloadCluster events

* feat(api/client): run make grpc

* fix(lib/services): remove workload cluster event parsing
2026-05-07 16:02:12 +00:00
Ryan Clark 3c4f1617ec Add metadata/thumbnail generation for desktop recordings (#65381)
* Add metadata/thumbnail generation for desktop recordings

* Rename isPTYSession to metadataParamsForSessionEnd

* go mod tidy

* Disable the processor if RDP decoder is not available

* Reuse png.Encoder and buffer instead of creating new per screenshot

* Add clarifying comment about returning nil, nil when no decoder

* Add Windows desktop end events

* Set the session start time from end event if we don't already have it

* Break import cycle by extracting MFA JSON types to lib/client/mfatypes

* pnpm format

* go mod tidy all

* Remove flakey test that's covered through other paths

* Use a different interval for desktop sessions, make frames smaller than thumbnail

* Set correct flags when resuming mid-upload

* go.sum

* Handle desktop events in session post processor

* Add a semaphore to desktop recording processing

* Populate metadata from end event if start event not present

* Formatting

* Pass session start time to the metadata processor

* Reduce image sizes in tests
2026-05-07 11:23:04 +00:00
Sakshyam Shah 990b1cf72b entra plugin sync intervals (#66229)
* feat: add entra plugin sync interval proto

* SyncIntervals custom JSON marshaller, defaults and test

* review:
- avoid mutating plugin spec and backfill default at service level
- fix test msg typo
- provide example of PluginSyncInterval.MarshalJSON

* refactor: update intervals proto type to be of string
2026-05-07 02:32:49 +00:00
Kevin ae4bb28b8b Add traits matching logic for users (#66020) 2026-05-05 23:42:31 +00:00
Dan Upton 71e8c9a40d Add tsh delegation create-session command (#65029)
* Add test helper for authenticating user

* Add `CreateDelegationSession` RPC

* Add `tsh delegation create-session` command

* Apply login state before checking resource access

* Set max TTL on delegation sessions

* Make `TestBuildCreateDelegationSessionRequest` table-driven

* Prevent sub-delegation for now

* Pass `allowReuse = false` when performing MFA ceremony

* Fix test error message assertion

* Honor the `DisallowReissue` flag

* Use `ttl` variable instead of calling `GetTtl`
2026-05-05 16:17:50 +00:00
Gabriel Corado 59dc3182e3 Add TLS options to app spec (#65995)
* feat: add TLS options for app spec

* fix(service): missing app tls

* chore: missing generations

* refactor(api): update

* feat(api): add `tls://` scheme for TCP apps

* refactor: move app tls validation to services

* refactor(services): improve ca certificates validation

* refactor(services): move app tls validation to happen before public_addr early return

* refactor(services): remove time-based validations and allow single cert

* test: improve testing around tls fields

* refactor: code review suggestions

* chore(api): regenerate proto

* chore(docs): regenerate docs

* refactor(api): always return a copy of the allowed ca aliases

* chore(api): typo
2026-05-05 15:50:04 +00:00
Maxim 2e2fdfe041 fix: Add SSH ResourceConstraint event messages, fix unmarshalling (#65721) 2026-05-01 21:13:23 +00:00
Dustin SpeckerandPaul Gottschling 7bb55db115 Add docs for workload_cluster (#65812)
* docs: add reference for workload-cluster

* docs: add workload clusters guide

* fix(docs): add words to ignore

* feat(build.assets): use resource-ref-generator

* fix(docs): clarify replacing account and arn

* docs(zta/wc): add How it works and clarify child cluster

* docs(zta/wc): make feature availability callout a warning

* docs(zta/wc): move IAM callout to paragraph

* docs(zta/wc): indent snippets

* docs(zta/wc): split up Go example

* docs(zta/wc): update example ARN to use assumed-role

* docs(refs/wc): update example to use assumed-role

* fix typo

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>

* docs(zta/wc): fix snippet indent

* docs(zta/wc): move wc Go to examples dir

* fix(examples/wc): uppercase log messages

* refactor(examples/wc): rename to timeoutCtx

* fix(examples/wc): log os.RemoveAll error

* fix(examples/wc): use fmt.Printf instead for actual output

* refactor(examples/wc): move replaceable values to vars block

* refactor(examples/wc): use ticker instead of timer

* docs(zta/wc): reword example usage

* fix(docs/wc): update example name

* fix(docs/zta/wc): fix cd command

* docs(zta/wc): clarify address

* fix(examples/wc): add license header

* refactor(examples/wc): move wc name to a var

* fix(api/proto/wc): improve godoc for bot.name

* docs(zta/wc): use company-organization as name

* fix(examples/wc): use deffered func to delete wc

* refactor(examples/wc): use consistent import naming

* refactor(examples/wc): avoid panics

* fix(examples/wc): fix log message

---------

Co-authored-by: Paul Gottschling <paul.gottschling@goteleport.com>
2026-04-29 21:10:24 +00:00
Przemko RobakowskiandZac Bergquist d3fe70b2c2 Add locks support for Linux desktop (#65761)
* Add LinuxDesktop gRPC and backend

* Add LinuxDesktop resource to unified resources

* Remove CloneResource

* Review comments

* Fix logins

* Review comment

* Add ClonableResourceWithLabels

* Fix missing CloneResource

* Update lib/auth/linuxdesktop/linuxdesktopv1/service.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Proto changes for Linux Desktop

* Add locks support for Linux desktop

* Fix role

* Update lib/auth/auth_with_roles.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Update lib/web/ui/server.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Fix compilation

* Review comments

* Review comments

* fix e

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2026-04-29 08:50:19 +00:00
Marco Dinis 801c68a11d Add support for filtering by Organizational Units in IAM Join (#66241) 2026-04-29 08:01:05 +00:00
Przemko RobakowskiandZac Bergquist 0065833422 Proto changes for Linux Desktop (#65692)
* Add LinuxDesktop gRPC and backend

* Add LinuxDesktop resource to unified resources

* Remove CloneResource

* Review comments

* Fix logins

* Review comment

* Add ClonableResourceWithLabels

* Fix missing CloneResource

* Update lib/auth/linuxdesktop/linuxdesktopv1/service.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Proto changes for Linux Desktop

* Fix role

* Update lib/auth/auth_with_roles.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Update lib/web/ui/server.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Fix compilation

* Review comments

* Review comments

* e

* skip gogoproto

* e

* fix test

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2026-04-29 07:20:46 +00:00
Michael 95287cc592 Add Device Bound Session Credentials to App Access (#65431) 2026-04-28 22:35:47 +00:00
Przemko RobakowskiandZac Bergquist 1c0a636206 Add LinuxDesktop resource to unified resources (#63101)
* Add LinuxDesktop gRPC and backend

* Add LinuxDesktop resource to unified resources

* Remove CloneResource

* Review comments

* Fix logins

* Review comment

* Add ClonableResourceWithLabels

* Fix missing CloneResource

* Update lib/auth/linuxdesktop/linuxdesktopv1/service.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Fix role

* Update lib/auth/auth_with_roles.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Update lib/web/ui/server.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

* Fix compilation

* e

* skip gogoproto

* e

* fix test

* Update api/client/proto/linuxdesktop.go

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>

---------

Co-authored-by: Zac Bergquist <zac.bergquist@goteleport.com>
2026-04-28 20:57:34 +00:00
Nic KlaassenandErik Tate 6692655872 [scopes] feat: filter scoped roles by name (#65891)
* [scopes] feat: filter scoped roles by name

* fix typo in comment

Co-authored-by: Erik Tate <erik.tate@goteleport.com>

---------

Co-authored-by: Erik Tate <erik.tate@goteleport.com>
2026-04-27 23:35:37 +00:00
Tiago Silva 723043621d sessionsearch[22]: add SearchMode enum to session search protos (#66205)
Adds a `SearchMode` enum to session search protos, allowing clients to choose the search mode that best fits their keywords.

Some searches perform better with embeddings only, while others work better with strict keyword matching. This change lets clients opt into their preferred search method, while keeping hybrid search as the default.

Signed-off-by: Tiago Silva <tiago.silva@goteleport.com>
2026-04-27 14:30:35 +00:00
Nibras Ohin 06149a61ff feat: add VNetDNSName to DatabaseStatusV3 and implement hashing logic (#65903)
* feat: add VNetDNSName to DatabaseStatusV3 and implement hashing logic

* fix: fixed tests and linter errors

* refactor: to improve readability

* test: added unit test to test the auth server

* chore: updating based on PR feedback to set dns name during db server creation

* chore: minor test updates and refactor based on pr feedback
2026-04-27 14:23:07 +00:00
Alan Parra 3126a84d00 Add CAOverride details to WindowsDesktopSessionStart events (#65862)
* Add CAOverride details to WindowsDesktopSessionStart events

* make grpc
2026-04-24 20:52:06 +00:00
4b0c4fc421 Fix Jamf plugin duration serialization (#65944)
* Fix Jamf plugin duration serialization

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>

* Update comment, simplify `UnmarshalJSONPB`

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@gmail.com>

---------

Co-authored-by: Edoardo Spadolini <edoardo.spadolini@goteleport.com>
Co-authored-by: Edoardo Spadolini <edoardo.spadolini@gmail.com>
2026-04-24 15:10:15 +00:00