diff --git a/api/client/proto/event.pb.go b/api/client/proto/event_protohybrid.pb.go
similarity index 99%
rename from api/client/proto/event.pb.go
rename to api/client/proto/event_protohybrid.pb.go
index bb8cd29e3b6..34305584b95 100644
--- a/api/client/proto/event.pb.go
+++ b/api/client/proto/event_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/legacy/client/proto/event.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package proto
diff --git a/api/client/proto/event_protoopaque.pb.go b/api/client/proto/event_protoopaque.pb.go
index fe8e1fc266c..98f6a772f64 100644
--- a/api/client/proto/event_protoopaque.pb.go
+++ b/api/client/proto/event_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/legacy/client/proto/event.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package proto
diff --git a/api/client/proto/inventory.pb.go b/api/client/proto/inventory_protohybrid.pb.go
similarity index 99%
rename from api/client/proto/inventory.pb.go
rename to api/client/proto/inventory_protohybrid.pb.go
index 1e070197f02..aaf04c2031a 100644
--- a/api/client/proto/inventory.pb.go
+++ b/api/client/proto/inventory_protohybrid.pb.go
@@ -21,7 +21,7 @@
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
// buf:lint:ignore PACKAGE_VERSION_SUFFIX
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package proto
diff --git a/api/client/proto/inventory_protoopaque.pb.go b/api/client/proto/inventory_protoopaque.pb.go
index 3d7ce7a6ba3..13361f32766 100644
--- a/api/client/proto/inventory_protoopaque.pb.go
+++ b/api/client/proto/inventory_protoopaque.pb.go
@@ -21,7 +21,7 @@
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
// buf:lint:ignore PACKAGE_VERSION_SUFFIX
-//go:build protoopaque
+//go:build teleport_protoopaque
package proto
diff --git a/api/client/proto/requestable_roles.pb.go b/api/client/proto/requestable_roles_protohybrid.pb.go
similarity index 99%
rename from api/client/proto/requestable_roles.pb.go
rename to api/client/proto/requestable_roles_protohybrid.pb.go
index 68bdbb0ae49..f49f57ef553 100644
--- a/api/client/proto/requestable_roles.pb.go
+++ b/api/client/proto/requestable_roles_protohybrid.pb.go
@@ -21,7 +21,7 @@
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
// buf:lint:ignore PACKAGE_VERSION_SUFFIX
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package proto
diff --git a/api/client/proto/requestable_roles_protoopaque.pb.go b/api/client/proto/requestable_roles_protoopaque.pb.go
index 0e79f41baa0..f97f228ac2d 100644
--- a/api/client/proto/requestable_roles_protoopaque.pb.go
+++ b/api/client/proto/requestable_roles_protoopaque.pb.go
@@ -21,7 +21,7 @@
// buf:lint:ignore PACKAGE_DIRECTORY_MATCH
// buf:lint:ignore PACKAGE_VERSION_SUFFIX
-//go:build protoopaque
+//go:build teleport_protoopaque
package proto
diff --git a/api/gen/proto/go/teleport/accessgraph/v1/authorized_key.pb.go b/api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accessgraph/v1/authorized_key.pb.go
rename to api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protohybrid.pb.go
index cd2a39c30ac..eb76823db67 100644
--- a/api/gen/proto/go/teleport/accessgraph/v1/authorized_key.pb.go
+++ b/api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/access_graph/v1/authorized_key.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1
diff --git a/api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protoopaque.pb.go b/api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protoopaque.pb.go
index 71577fac52e..0f5a14d37b0 100644
--- a/api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accessgraph/v1/authorized_key_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/access_graph/v1/authorized_key.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1
diff --git a/api/gen/proto/go/teleport/accessgraph/v1/private_key.pb.go b/api/gen/proto/go/teleport/accessgraph/v1/private_key_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accessgraph/v1/private_key.pb.go
rename to api/gen/proto/go/teleport/accessgraph/v1/private_key_protohybrid.pb.go
index 306bac3d5c5..1a2981d09c3 100644
--- a/api/gen/proto/go/teleport/accessgraph/v1/private_key.pb.go
+++ b/api/gen/proto/go/teleport/accessgraph/v1/private_key_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/access_graph/v1/private_key.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1
diff --git a/api/gen/proto/go/teleport/accessgraph/v1/private_key_protoopaque.pb.go b/api/gen/proto/go/teleport/accessgraph/v1/private_key_protoopaque.pb.go
index a96fb2ea54c..fe59323376b 100644
--- a/api/gen/proto/go/teleport/accessgraph/v1/private_key_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accessgraph/v1/private_key_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/access_graph/v1/private_key.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1
diff --git a/api/gen/proto/go/teleport/accessgraph/v1/secrets_service.pb.go b/api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accessgraph/v1/secrets_service.pb.go
rename to api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protohybrid.pb.go
index 3636dacdb7b..64eeeaa61eb 100644
--- a/api/gen/proto/go/teleport/accessgraph/v1/secrets_service.pb.go
+++ b/api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/access_graph/v1/secrets_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1
diff --git a/api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protoopaque.pb.go b/api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protoopaque.pb.go
index 709ee7b7ee0..605e73bb646 100644
--- a/api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accessgraph/v1/secrets_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/access_graph/v1/secrets_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1
diff --git a/api/gen/proto/go/teleport/accesslist/v1/accesslist.pb.go b/api/gen/proto/go/teleport/accesslist/v1/accesslist_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accesslist/v1/accesslist.pb.go
rename to api/gen/proto/go/teleport/accesslist/v1/accesslist_protohybrid.pb.go
index a423e6abf5b..1b761a39753 100644
--- a/api/gen/proto/go/teleport/accesslist/v1/accesslist.pb.go
+++ b/api/gen/proto/go/teleport/accesslist/v1/accesslist_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accesslist/v1/accesslist.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accesslistv1
diff --git a/api/gen/proto/go/teleport/accesslist/v1/accesslist_protoopaque.pb.go b/api/gen/proto/go/teleport/accesslist/v1/accesslist_protoopaque.pb.go
index fcf8319f241..1ccb26a3688 100644
--- a/api/gen/proto/go/teleport/accesslist/v1/accesslist_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accesslist/v1/accesslist_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accesslist/v1/accesslist.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accesslistv1
diff --git a/api/gen/proto/go/teleport/accesslist/v1/accesslist_service.pb.go b/api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accesslist/v1/accesslist_service.pb.go
rename to api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protohybrid.pb.go
index 3dc166f5a49..c4936e32705 100644
--- a/api/gen/proto/go/teleport/accesslist/v1/accesslist_service.pb.go
+++ b/api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accesslist/v1/accesslist_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accesslistv1
diff --git a/api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protoopaque.pb.go b/api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protoopaque.pb.go
index 393ad5c337a..79c0424bffb 100644
--- a/api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accesslist/v1/accesslist_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accesslist/v1/accesslist_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accesslistv1
diff --git a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules.pb.go b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules.pb.go
rename to api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protohybrid.pb.go
index 8d6062031df..53438da98af 100644
--- a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules.pb.go
+++ b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accessmonitoringrules/v1/access_monitoring_rules.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessmonitoringrulesv1
diff --git a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protoopaque.pb.go b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protoopaque.pb.go
index 94027ed9221..e3db8836f0f 100644
--- a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accessmonitoringrules/v1/access_monitoring_rules.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessmonitoringrulesv1
diff --git a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service.pb.go b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service.pb.go
rename to api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protohybrid.pb.go
index 7a60b71a519..cbe61018635 100644
--- a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service.pb.go
+++ b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accessmonitoringrules/v1/access_monitoring_rules_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessmonitoringrulesv1
diff --git a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protoopaque.pb.go b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protoopaque.pb.go
index 7f14123df49..c8f8ea855a4 100644
--- a/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/accessmonitoringrules/v1/access_monitoring_rules_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessmonitoringrulesv1
diff --git a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig.pb.go b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig.pb.go
rename to api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protohybrid.pb.go
index 6e452720aa0..52dfe5ce861 100644
--- a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig.pb.go
+++ b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/appauthconfig/v1/appauthconfig.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package appauthconfigv1
diff --git a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protoopaque.pb.go b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protoopaque.pb.go
index 8aa4d34d6c1..3725ff47e46 100644
--- a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/appauthconfig/v1/appauthconfig.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package appauthconfigv1
diff --git a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service.pb.go b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service.pb.go
rename to api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protohybrid.pb.go
index 54c4c11b34e..7529f7cbeff 100644
--- a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service.pb.go
+++ b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/appauthconfig/v1/appauthconfig_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package appauthconfigv1
diff --git a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protoopaque.pb.go b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protoopaque.pb.go
index df8ec1bd461..eeb511cf3ae 100644
--- a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/appauthconfig/v1/appauthconfig_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package appauthconfigv1
diff --git a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service.pb.go b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service.pb.go
rename to api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protohybrid.pb.go
index 00ebd8174b1..644dfb5288e 100644
--- a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service.pb.go
+++ b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/appauthconfig/v1/appauthconfig_sessions_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package appauthconfigv1
diff --git a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protoopaque.pb.go b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protoopaque.pb.go
index 55ae9e1353d..716a46dae8f 100644
--- a/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/appauthconfig/v1/appauthconfig_sessions_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package appauthconfigv1
diff --git a/api/gen/proto/go/teleport/auditlog/v1/auditlog.pb.go b/api/gen/proto/go/teleport/auditlog/v1/auditlog_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/auditlog/v1/auditlog.pb.go
rename to api/gen/proto/go/teleport/auditlog/v1/auditlog_protohybrid.pb.go
index e9fab4ee139..841ccc25982 100644
--- a/api/gen/proto/go/teleport/auditlog/v1/auditlog.pb.go
+++ b/api/gen/proto/go/teleport/auditlog/v1/auditlog_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/auditlog/v1/auditlog.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package auditlogv1
diff --git a/api/gen/proto/go/teleport/auditlog/v1/auditlog_protoopaque.pb.go b/api/gen/proto/go/teleport/auditlog/v1/auditlog_protoopaque.pb.go
index 3c7ab9ae742..e064f1c3352 100644
--- a/api/gen/proto/go/teleport/auditlog/v1/auditlog_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/auditlog/v1/auditlog_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/auditlog/v1/auditlog.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package auditlogv1
diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/autoupdate/v1/autoupdate.pb.go
rename to api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protohybrid.pb.go
index b17e0c1ab81..9cfeb0c195b 100644
--- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate.pb.go
+++ b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/autoupdate/v1/autoupdate.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package autoupdate
diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protoopaque.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protoopaque.pb.go
index 3391434aa04..57e778b5ea7 100644
--- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/autoupdate/v1/autoupdate.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package autoupdate
diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go
rename to api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protohybrid.pb.go
index 7c1e136188a..b6031adb099 100644
--- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service.pb.go
+++ b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/autoupdate/v1/autoupdate_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package autoupdate
diff --git a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protoopaque.pb.go b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protoopaque.pb.go
index a12c1fb8ae3..197afa71d3d 100644
--- a/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/autoupdate/v1/autoupdate_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package autoupdate
diff --git a/api/gen/proto/go/teleport/backendinfo/v1/backendinfo.pb.go b/api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/backendinfo/v1/backendinfo.pb.go
rename to api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protohybrid.pb.go
index 3f7e81d5885..f57df9f8f0d 100644
--- a/api/gen/proto/go/teleport/backendinfo/v1/backendinfo.pb.go
+++ b/api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/backendinfo/v1/backendinfo.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package backendinfov1
diff --git a/api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protoopaque.pb.go b/api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protoopaque.pb.go
index c469da24860..be8561e16d8 100644
--- a/api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/backendinfo/v1/backendinfo_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/backendinfo/v1/backendinfo.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package backendinfov1
diff --git a/api/gen/proto/go/teleport/beams/v1/beam.pb.go b/api/gen/proto/go/teleport/beams/v1/beam_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/beams/v1/beam.pb.go
rename to api/gen/proto/go/teleport/beams/v1/beam_protohybrid.pb.go
index f128933f02d..c6e0b34d1e0 100644
--- a/api/gen/proto/go/teleport/beams/v1/beam.pb.go
+++ b/api/gen/proto/go/teleport/beams/v1/beam_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/beams/v1/beam.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package beamsv1
diff --git a/api/gen/proto/go/teleport/beams/v1/beam_protoopaque.pb.go b/api/gen/proto/go/teleport/beams/v1/beam_protoopaque.pb.go
index 7e615570815..809b7c52429 100644
--- a/api/gen/proto/go/teleport/beams/v1/beam_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/beams/v1/beam_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/beams/v1/beam.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package beamsv1
diff --git a/api/gen/proto/go/teleport/beams/v1/beam_service.pb.go b/api/gen/proto/go/teleport/beams/v1/beam_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/beams/v1/beam_service.pb.go
rename to api/gen/proto/go/teleport/beams/v1/beam_service_protohybrid.pb.go
index 3c7fa63b69a..d9eedd81e7e 100644
--- a/api/gen/proto/go/teleport/beams/v1/beam_service.pb.go
+++ b/api/gen/proto/go/teleport/beams/v1/beam_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/beams/v1/beam_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package beamsv1
diff --git a/api/gen/proto/go/teleport/beams/v1/beam_service_protoopaque.pb.go b/api/gen/proto/go/teleport/beams/v1/beam_service_protoopaque.pb.go
index 403b4cfce34..5e5b171b3d9 100644
--- a/api/gen/proto/go/teleport/beams/v1/beam_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/beams/v1/beam_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/beams/v1/beam_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package beamsv1
diff --git a/api/gen/proto/go/teleport/beams/v1/beams_config_protohybrid.pb.go b/api/gen/proto/go/teleport/beams/v1/beams_config_protohybrid.pb.go
new file mode 100644
index 00000000000..402a3fdbdf7
--- /dev/null
+++ b/api/gen/proto/go/teleport/beams/v1/beams_config_protohybrid.pb.go
@@ -0,0 +1,480 @@
+// Copyright 2026 Gravitational, Inc
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/beams/v1/beams_config.proto
+
+//go:build teleport_protohybrid
+
+package beamsv1
+
+import (
+ v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// BeamsConfig holds user-provided configuration for Beams.
+type BeamsConfig struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Kind is the kind of resource represented. This is always `beams_config`.
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+ // SubKind is the sub_kind of the resource. Always "".
+ SubKind string `protobuf:"bytes,2,opt,name=sub_kind,json=subKind,proto3" json:"sub_kind,omitempty"`
+ // Version is the version of the resource. Always "v1".
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+ // Metadata about this resource.
+ Metadata *v1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ // Spec defines the user-provided configuration parameters for Beams.
+ Spec *BeamsConfigSpec `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *BeamsConfig) Reset() {
+ *x = BeamsConfig{}
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *BeamsConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BeamsConfig) ProtoMessage() {}
+
+func (x *BeamsConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *BeamsConfig) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *BeamsConfig) GetSubKind() string {
+ if x != nil {
+ return x.SubKind
+ }
+ return ""
+}
+
+func (x *BeamsConfig) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *BeamsConfig) GetMetadata() *v1.Metadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *BeamsConfig) GetSpec() *BeamsConfigSpec {
+ if x != nil {
+ return x.Spec
+ }
+ return nil
+}
+
+func (x *BeamsConfig) SetKind(v string) {
+ x.Kind = v
+}
+
+func (x *BeamsConfig) SetSubKind(v string) {
+ x.SubKind = v
+}
+
+func (x *BeamsConfig) SetVersion(v string) {
+ x.Version = v
+}
+
+func (x *BeamsConfig) SetMetadata(v *v1.Metadata) {
+ x.Metadata = v
+}
+
+func (x *BeamsConfig) SetSpec(v *BeamsConfigSpec) {
+ x.Spec = v
+}
+
+func (x *BeamsConfig) HasMetadata() bool {
+ if x == nil {
+ return false
+ }
+ return x.Metadata != nil
+}
+
+func (x *BeamsConfig) HasSpec() bool {
+ if x == nil {
+ return false
+ }
+ return x.Spec != nil
+}
+
+func (x *BeamsConfig) ClearMetadata() {
+ x.Metadata = nil
+}
+
+func (x *BeamsConfig) ClearSpec() {
+ x.Spec = nil
+}
+
+type BeamsConfig_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Kind is the kind of resource represented. This is always `beams_config`.
+ Kind string
+ // SubKind is the sub_kind of the resource. Always "".
+ SubKind string
+ // Version is the version of the resource. Always "v1".
+ Version string
+ // Metadata about this resource.
+ Metadata *v1.Metadata
+ // Spec defines the user-provided configuration parameters for Beams.
+ Spec *BeamsConfigSpec
+}
+
+func (b0 BeamsConfig_builder) Build() *BeamsConfig {
+ m0 := &BeamsConfig{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Kind = b.Kind
+ x.SubKind = b.SubKind
+ x.Version = b.Version
+ x.Metadata = b.Metadata
+ x.Spec = b.Spec
+ return m0
+}
+
+// BeamsConfigSpec defines the user-provided configuration parameters for Beams.
+type BeamsConfigSpec struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Llm carries LLM inference configurations.
+ Llm *LLMConfig `protobuf:"bytes,1,opt,name=llm,proto3" json:"llm,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *BeamsConfigSpec) Reset() {
+ *x = BeamsConfigSpec{}
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *BeamsConfigSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BeamsConfigSpec) ProtoMessage() {}
+
+func (x *BeamsConfigSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *BeamsConfigSpec) GetLlm() *LLMConfig {
+ if x != nil {
+ return x.Llm
+ }
+ return nil
+}
+
+func (x *BeamsConfigSpec) SetLlm(v *LLMConfig) {
+ x.Llm = v
+}
+
+func (x *BeamsConfigSpec) HasLlm() bool {
+ if x == nil {
+ return false
+ }
+ return x.Llm != nil
+}
+
+func (x *BeamsConfigSpec) ClearLlm() {
+ x.Llm = nil
+}
+
+type BeamsConfigSpec_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Llm carries LLM inference configurations.
+ Llm *LLMConfig
+}
+
+func (b0 BeamsConfigSpec_builder) Build() *BeamsConfigSpec {
+ m0 := &BeamsConfigSpec{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Llm = b.Llm
+ return m0
+}
+
+// LLMConfig defines the LLM providers available to Beams.
+type LLMConfig struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Anthropic LLM endpoint configuration.
+ Anthropic *LLMEndpointConfig `protobuf:"bytes,1,opt,name=anthropic,proto3" json:"anthropic,omitempty"`
+ // OpenAI LLM endpoint configuration.
+ Openai *LLMEndpointConfig `protobuf:"bytes,2,opt,name=openai,proto3" json:"openai,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LLMConfig) Reset() {
+ *x = LLMConfig{}
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LLMConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LLMConfig) ProtoMessage() {}
+
+func (x *LLMConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *LLMConfig) GetAnthropic() *LLMEndpointConfig {
+ if x != nil {
+ return x.Anthropic
+ }
+ return nil
+}
+
+func (x *LLMConfig) GetOpenai() *LLMEndpointConfig {
+ if x != nil {
+ return x.Openai
+ }
+ return nil
+}
+
+func (x *LLMConfig) SetAnthropic(v *LLMEndpointConfig) {
+ x.Anthropic = v
+}
+
+func (x *LLMConfig) SetOpenai(v *LLMEndpointConfig) {
+ x.Openai = v
+}
+
+func (x *LLMConfig) HasAnthropic() bool {
+ if x == nil {
+ return false
+ }
+ return x.Anthropic != nil
+}
+
+func (x *LLMConfig) HasOpenai() bool {
+ if x == nil {
+ return false
+ }
+ return x.Openai != nil
+}
+
+func (x *LLMConfig) ClearAnthropic() {
+ x.Anthropic = nil
+}
+
+func (x *LLMConfig) ClearOpenai() {
+ x.Openai = nil
+}
+
+type LLMConfig_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Anthropic LLM endpoint configuration.
+ Anthropic *LLMEndpointConfig
+ // OpenAI LLM endpoint configuration.
+ Openai *LLMEndpointConfig
+}
+
+func (b0 LLMConfig_builder) Build() *LLMConfig {
+ m0 := &LLMConfig{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Anthropic = b.Anthropic
+ x.Openai = b.Openai
+ return m0
+}
+
+// LLMEndpointConfig defines the configuration for an LLM endpoint backed by a
+// Teleport app.
+type LLMEndpointConfig struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // AppName is the name of the Teleport app that proxies LLM requests. When
+ // empty, defaults to the Cloud-managed LLM app for this endpoint.
+ AppName string `protobuf:"bytes,1,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LLMEndpointConfig) Reset() {
+ *x = LLMEndpointConfig{}
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LLMEndpointConfig) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LLMEndpointConfig) ProtoMessage() {}
+
+func (x *LLMEndpointConfig) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *LLMEndpointConfig) GetAppName() string {
+ if x != nil {
+ return x.AppName
+ }
+ return ""
+}
+
+func (x *LLMEndpointConfig) SetAppName(v string) {
+ x.AppName = v
+}
+
+type LLMEndpointConfig_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // AppName is the name of the Teleport app that proxies LLM requests. When
+ // empty, defaults to the Cloud-managed LLM app for this endpoint.
+ AppName string
+}
+
+func (b0 LLMEndpointConfig_builder) Build() *LLMEndpointConfig {
+ m0 := &LLMEndpointConfig{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.AppName = b.AppName
+ return m0
+}
+
+var File_teleport_beams_v1_beams_config_proto protoreflect.FileDescriptor
+
+const file_teleport_beams_v1_beams_config_proto_rawDesc = "" +
+ "\n" +
+ "$teleport/beams/v1/beams_config.proto\x12\x11teleport.beams.v1\x1a!teleport/header/v1/metadata.proto\"\xc8\x01\n" +
+ "\vBeamsConfig\x12\x12\n" +
+ "\x04kind\x18\x01 \x01(\tR\x04kind\x12\x19\n" +
+ "\bsub_kind\x18\x02 \x01(\tR\asubKind\x12\x18\n" +
+ "\aversion\x18\x03 \x01(\tR\aversion\x128\n" +
+ "\bmetadata\x18\x04 \x01(\v2\x1c.teleport.header.v1.MetadataR\bmetadata\x126\n" +
+ "\x04spec\x18\x05 \x01(\v2\".teleport.beams.v1.BeamsConfigSpecR\x04spec\"A\n" +
+ "\x0fBeamsConfigSpec\x12.\n" +
+ "\x03llm\x18\x01 \x01(\v2\x1c.teleport.beams.v1.LLMConfigR\x03llm\"\x8d\x01\n" +
+ "\tLLMConfig\x12B\n" +
+ "\tanthropic\x18\x01 \x01(\v2$.teleport.beams.v1.LLMEndpointConfigR\tanthropic\x12<\n" +
+ "\x06openai\x18\x02 \x01(\v2$.teleport.beams.v1.LLMEndpointConfigR\x06openai\".\n" +
+ "\x11LLMEndpointConfig\x12\x19\n" +
+ "\bapp_name\x18\x01 \x01(\tR\aappNameBNZLgithub.com/gravitational/teleport/api/gen/proto/go/teleport/beams/v1;beamsv1b\x06proto3"
+
+var file_teleport_beams_v1_beams_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_teleport_beams_v1_beams_config_proto_goTypes = []any{
+ (*BeamsConfig)(nil), // 0: teleport.beams.v1.BeamsConfig
+ (*BeamsConfigSpec)(nil), // 1: teleport.beams.v1.BeamsConfigSpec
+ (*LLMConfig)(nil), // 2: teleport.beams.v1.LLMConfig
+ (*LLMEndpointConfig)(nil), // 3: teleport.beams.v1.LLMEndpointConfig
+ (*v1.Metadata)(nil), // 4: teleport.header.v1.Metadata
+}
+var file_teleport_beams_v1_beams_config_proto_depIdxs = []int32{
+ 4, // 0: teleport.beams.v1.BeamsConfig.metadata:type_name -> teleport.header.v1.Metadata
+ 1, // 1: teleport.beams.v1.BeamsConfig.spec:type_name -> teleport.beams.v1.BeamsConfigSpec
+ 2, // 2: teleport.beams.v1.BeamsConfigSpec.llm:type_name -> teleport.beams.v1.LLMConfig
+ 3, // 3: teleport.beams.v1.LLMConfig.anthropic:type_name -> teleport.beams.v1.LLMEndpointConfig
+ 3, // 4: teleport.beams.v1.LLMConfig.openai:type_name -> teleport.beams.v1.LLMEndpointConfig
+ 5, // [5:5] is the sub-list for method output_type
+ 5, // [5:5] is the sub-list for method input_type
+ 5, // [5:5] is the sub-list for extension type_name
+ 5, // [5:5] is the sub-list for extension extendee
+ 0, // [0:5] is the sub-list for field type_name
+}
+
+func init() { file_teleport_beams_v1_beams_config_proto_init() }
+func file_teleport_beams_v1_beams_config_proto_init() {
+ if File_teleport_beams_v1_beams_config_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_beams_v1_beams_config_proto_rawDesc), len(file_teleport_beams_v1_beams_config_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 4,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_teleport_beams_v1_beams_config_proto_goTypes,
+ DependencyIndexes: file_teleport_beams_v1_beams_config_proto_depIdxs,
+ MessageInfos: file_teleport_beams_v1_beams_config_proto_msgTypes,
+ }.Build()
+ File_teleport_beams_v1_beams_config_proto = out.File
+ file_teleport_beams_v1_beams_config_proto_goTypes = nil
+ file_teleport_beams_v1_beams_config_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/beams/v1/beams_config.pb.go b/api/gen/proto/go/teleport/beams/v1/beams_config_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/beams/v1/beams_config.pb.go
rename to api/gen/proto/go/teleport/beams/v1/beams_config_protoopaque.pb.go
index 4d725b95b4e..38d17c7dcec 100644
--- a/api/gen/proto/go/teleport/beams/v1/beams_config.pb.go
+++ b/api/gen/proto/go/teleport/beams/v1/beams_config_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/beams/v1/beams_config.proto
+//go:build !teleport_protohybrid
+
package beamsv1
import (
diff --git a/api/gen/proto/go/teleport/beams/v1/beams_config_service_protohybrid.pb.go b/api/gen/proto/go/teleport/beams/v1/beams_config_service_protohybrid.pb.go
new file mode 100644
index 00000000000..c2e45861e96
--- /dev/null
+++ b/api/gen/proto/go/teleport/beams/v1/beams_config_service_protohybrid.pb.go
@@ -0,0 +1,596 @@
+// Copyright 2026 Gravitational, Inc
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/beams/v1/beams_config_service.proto
+
+//go:build teleport_protohybrid
+
+package beamsv1
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Request for GetBeamsConfig.
+type GetBeamsConfigRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GetBeamsConfigRequest) Reset() {
+ *x = GetBeamsConfigRequest{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GetBeamsConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetBeamsConfigRequest) ProtoMessage() {}
+
+func (x *GetBeamsConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+type GetBeamsConfigRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 GetBeamsConfigRequest_builder) Build() *GetBeamsConfigRequest {
+ m0 := &GetBeamsConfigRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ return m0
+}
+
+// Response for GetBeamsConfig.
+type GetBeamsConfigResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ BeamsConfig *BeamsConfig `protobuf:"bytes,1,opt,name=beams_config,json=beamsConfig,proto3" json:"beams_config,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GetBeamsConfigResponse) Reset() {
+ *x = GetBeamsConfigResponse{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GetBeamsConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetBeamsConfigResponse) ProtoMessage() {}
+
+func (x *GetBeamsConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *GetBeamsConfigResponse) GetBeamsConfig() *BeamsConfig {
+ if x != nil {
+ return x.BeamsConfig
+ }
+ return nil
+}
+
+func (x *GetBeamsConfigResponse) SetBeamsConfig(v *BeamsConfig) {
+ x.BeamsConfig = v
+}
+
+func (x *GetBeamsConfigResponse) HasBeamsConfig() bool {
+ if x == nil {
+ return false
+ }
+ return x.BeamsConfig != nil
+}
+
+func (x *GetBeamsConfigResponse) ClearBeamsConfig() {
+ x.BeamsConfig = nil
+}
+
+type GetBeamsConfigResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ BeamsConfig *BeamsConfig
+}
+
+func (b0 GetBeamsConfigResponse_builder) Build() *GetBeamsConfigResponse {
+ m0 := &GetBeamsConfigResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.BeamsConfig = b.BeamsConfig
+ return m0
+}
+
+// Request for CreateBeamsConfig.
+type CreateBeamsConfigRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ BeamsConfig *BeamsConfig `protobuf:"bytes,1,opt,name=beams_config,json=beamsConfig,proto3" json:"beams_config,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreateBeamsConfigRequest) Reset() {
+ *x = CreateBeamsConfigRequest{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreateBeamsConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateBeamsConfigRequest) ProtoMessage() {}
+
+func (x *CreateBeamsConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CreateBeamsConfigRequest) GetBeamsConfig() *BeamsConfig {
+ if x != nil {
+ return x.BeamsConfig
+ }
+ return nil
+}
+
+func (x *CreateBeamsConfigRequest) SetBeamsConfig(v *BeamsConfig) {
+ x.BeamsConfig = v
+}
+
+func (x *CreateBeamsConfigRequest) HasBeamsConfig() bool {
+ if x == nil {
+ return false
+ }
+ return x.BeamsConfig != nil
+}
+
+func (x *CreateBeamsConfigRequest) ClearBeamsConfig() {
+ x.BeamsConfig = nil
+}
+
+type CreateBeamsConfigRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ BeamsConfig *BeamsConfig
+}
+
+func (b0 CreateBeamsConfigRequest_builder) Build() *CreateBeamsConfigRequest {
+ m0 := &CreateBeamsConfigRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.BeamsConfig = b.BeamsConfig
+ return m0
+}
+
+// Response for CreateBeamsConfig.
+type CreateBeamsConfigResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ BeamsConfig *BeamsConfig `protobuf:"bytes,1,opt,name=beams_config,json=beamsConfig,proto3" json:"beams_config,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreateBeamsConfigResponse) Reset() {
+ *x = CreateBeamsConfigResponse{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreateBeamsConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateBeamsConfigResponse) ProtoMessage() {}
+
+func (x *CreateBeamsConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CreateBeamsConfigResponse) GetBeamsConfig() *BeamsConfig {
+ if x != nil {
+ return x.BeamsConfig
+ }
+ return nil
+}
+
+func (x *CreateBeamsConfigResponse) SetBeamsConfig(v *BeamsConfig) {
+ x.BeamsConfig = v
+}
+
+func (x *CreateBeamsConfigResponse) HasBeamsConfig() bool {
+ if x == nil {
+ return false
+ }
+ return x.BeamsConfig != nil
+}
+
+func (x *CreateBeamsConfigResponse) ClearBeamsConfig() {
+ x.BeamsConfig = nil
+}
+
+type CreateBeamsConfigResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ BeamsConfig *BeamsConfig
+}
+
+func (b0 CreateBeamsConfigResponse_builder) Build() *CreateBeamsConfigResponse {
+ m0 := &CreateBeamsConfigResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.BeamsConfig = b.BeamsConfig
+ return m0
+}
+
+// Request for UpdateBeamsConfig.
+type UpdateBeamsConfigRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ BeamsConfig *BeamsConfig `protobuf:"bytes,1,opt,name=beams_config,json=beamsConfig,proto3" json:"beams_config,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateBeamsConfigRequest) Reset() {
+ *x = UpdateBeamsConfigRequest{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateBeamsConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateBeamsConfigRequest) ProtoMessage() {}
+
+func (x *UpdateBeamsConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *UpdateBeamsConfigRequest) GetBeamsConfig() *BeamsConfig {
+ if x != nil {
+ return x.BeamsConfig
+ }
+ return nil
+}
+
+func (x *UpdateBeamsConfigRequest) SetBeamsConfig(v *BeamsConfig) {
+ x.BeamsConfig = v
+}
+
+func (x *UpdateBeamsConfigRequest) HasBeamsConfig() bool {
+ if x == nil {
+ return false
+ }
+ return x.BeamsConfig != nil
+}
+
+func (x *UpdateBeamsConfigRequest) ClearBeamsConfig() {
+ x.BeamsConfig = nil
+}
+
+type UpdateBeamsConfigRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ BeamsConfig *BeamsConfig
+}
+
+func (b0 UpdateBeamsConfigRequest_builder) Build() *UpdateBeamsConfigRequest {
+ m0 := &UpdateBeamsConfigRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.BeamsConfig = b.BeamsConfig
+ return m0
+}
+
+// Response for UpdateBeamsConfig.
+type UpdateBeamsConfigResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ BeamsConfig *BeamsConfig `protobuf:"bytes,1,opt,name=beams_config,json=beamsConfig,proto3" json:"beams_config,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateBeamsConfigResponse) Reset() {
+ *x = UpdateBeamsConfigResponse{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateBeamsConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateBeamsConfigResponse) ProtoMessage() {}
+
+func (x *UpdateBeamsConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *UpdateBeamsConfigResponse) GetBeamsConfig() *BeamsConfig {
+ if x != nil {
+ return x.BeamsConfig
+ }
+ return nil
+}
+
+func (x *UpdateBeamsConfigResponse) SetBeamsConfig(v *BeamsConfig) {
+ x.BeamsConfig = v
+}
+
+func (x *UpdateBeamsConfigResponse) HasBeamsConfig() bool {
+ if x == nil {
+ return false
+ }
+ return x.BeamsConfig != nil
+}
+
+func (x *UpdateBeamsConfigResponse) ClearBeamsConfig() {
+ x.BeamsConfig = nil
+}
+
+type UpdateBeamsConfigResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ BeamsConfig *BeamsConfig
+}
+
+func (b0 UpdateBeamsConfigResponse_builder) Build() *UpdateBeamsConfigResponse {
+ m0 := &UpdateBeamsConfigResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.BeamsConfig = b.BeamsConfig
+ return m0
+}
+
+// Request for DeleteBeamsConfig.
+type DeleteBeamsConfigRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *DeleteBeamsConfigRequest) Reset() {
+ *x = DeleteBeamsConfigRequest{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *DeleteBeamsConfigRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteBeamsConfigRequest) ProtoMessage() {}
+
+func (x *DeleteBeamsConfigRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+type DeleteBeamsConfigRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 DeleteBeamsConfigRequest_builder) Build() *DeleteBeamsConfigRequest {
+ m0 := &DeleteBeamsConfigRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ return m0
+}
+
+// Response for DeleteBeamsConfig.
+type DeleteBeamsConfigResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *DeleteBeamsConfigResponse) Reset() {
+ *x = DeleteBeamsConfigResponse{}
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *DeleteBeamsConfigResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*DeleteBeamsConfigResponse) ProtoMessage() {}
+
+func (x *DeleteBeamsConfigResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_beams_v1_beams_config_service_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+type DeleteBeamsConfigResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 DeleteBeamsConfigResponse_builder) Build() *DeleteBeamsConfigResponse {
+ m0 := &DeleteBeamsConfigResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ return m0
+}
+
+var File_teleport_beams_v1_beams_config_service_proto protoreflect.FileDescriptor
+
+const file_teleport_beams_v1_beams_config_service_proto_rawDesc = "" +
+ "\n" +
+ ",teleport/beams/v1/beams_config_service.proto\x12\x11teleport.beams.v1\x1a$teleport/beams/v1/beams_config.proto\"\x17\n" +
+ "\x15GetBeamsConfigRequest\"[\n" +
+ "\x16GetBeamsConfigResponse\x12A\n" +
+ "\fbeams_config\x18\x01 \x01(\v2\x1e.teleport.beams.v1.BeamsConfigR\vbeamsConfig\"]\n" +
+ "\x18CreateBeamsConfigRequest\x12A\n" +
+ "\fbeams_config\x18\x01 \x01(\v2\x1e.teleport.beams.v1.BeamsConfigR\vbeamsConfig\"^\n" +
+ "\x19CreateBeamsConfigResponse\x12A\n" +
+ "\fbeams_config\x18\x01 \x01(\v2\x1e.teleport.beams.v1.BeamsConfigR\vbeamsConfig\"]\n" +
+ "\x18UpdateBeamsConfigRequest\x12A\n" +
+ "\fbeams_config\x18\x01 \x01(\v2\x1e.teleport.beams.v1.BeamsConfigR\vbeamsConfig\"^\n" +
+ "\x19UpdateBeamsConfigResponse\x12A\n" +
+ "\fbeams_config\x18\x01 \x01(\v2\x1e.teleport.beams.v1.BeamsConfigR\vbeamsConfig\"\x1a\n" +
+ "\x18DeleteBeamsConfigRequest\"\x1b\n" +
+ "\x19DeleteBeamsConfigResponse2\xcb\x03\n" +
+ "\x12BeamsConfigService\x12e\n" +
+ "\x0eGetBeamsConfig\x12(.teleport.beams.v1.GetBeamsConfigRequest\x1a).teleport.beams.v1.GetBeamsConfigResponse\x12n\n" +
+ "\x11CreateBeamsConfig\x12+.teleport.beams.v1.CreateBeamsConfigRequest\x1a,.teleport.beams.v1.CreateBeamsConfigResponse\x12n\n" +
+ "\x11UpdateBeamsConfig\x12+.teleport.beams.v1.UpdateBeamsConfigRequest\x1a,.teleport.beams.v1.UpdateBeamsConfigResponse\x12n\n" +
+ "\x11DeleteBeamsConfig\x12+.teleport.beams.v1.DeleteBeamsConfigRequest\x1a,.teleport.beams.v1.DeleteBeamsConfigResponseBNZLgithub.com/gravitational/teleport/api/gen/proto/go/teleport/beams/v1;beamsv1b\x06proto3"
+
+var file_teleport_beams_v1_beams_config_service_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_teleport_beams_v1_beams_config_service_proto_goTypes = []any{
+ (*GetBeamsConfigRequest)(nil), // 0: teleport.beams.v1.GetBeamsConfigRequest
+ (*GetBeamsConfigResponse)(nil), // 1: teleport.beams.v1.GetBeamsConfigResponse
+ (*CreateBeamsConfigRequest)(nil), // 2: teleport.beams.v1.CreateBeamsConfigRequest
+ (*CreateBeamsConfigResponse)(nil), // 3: teleport.beams.v1.CreateBeamsConfigResponse
+ (*UpdateBeamsConfigRequest)(nil), // 4: teleport.beams.v1.UpdateBeamsConfigRequest
+ (*UpdateBeamsConfigResponse)(nil), // 5: teleport.beams.v1.UpdateBeamsConfigResponse
+ (*DeleteBeamsConfigRequest)(nil), // 6: teleport.beams.v1.DeleteBeamsConfigRequest
+ (*DeleteBeamsConfigResponse)(nil), // 7: teleport.beams.v1.DeleteBeamsConfigResponse
+ (*BeamsConfig)(nil), // 8: teleport.beams.v1.BeamsConfig
+}
+var file_teleport_beams_v1_beams_config_service_proto_depIdxs = []int32{
+ 8, // 0: teleport.beams.v1.GetBeamsConfigResponse.beams_config:type_name -> teleport.beams.v1.BeamsConfig
+ 8, // 1: teleport.beams.v1.CreateBeamsConfigRequest.beams_config:type_name -> teleport.beams.v1.BeamsConfig
+ 8, // 2: teleport.beams.v1.CreateBeamsConfigResponse.beams_config:type_name -> teleport.beams.v1.BeamsConfig
+ 8, // 3: teleport.beams.v1.UpdateBeamsConfigRequest.beams_config:type_name -> teleport.beams.v1.BeamsConfig
+ 8, // 4: teleport.beams.v1.UpdateBeamsConfigResponse.beams_config:type_name -> teleport.beams.v1.BeamsConfig
+ 0, // 5: teleport.beams.v1.BeamsConfigService.GetBeamsConfig:input_type -> teleport.beams.v1.GetBeamsConfigRequest
+ 2, // 6: teleport.beams.v1.BeamsConfigService.CreateBeamsConfig:input_type -> teleport.beams.v1.CreateBeamsConfigRequest
+ 4, // 7: teleport.beams.v1.BeamsConfigService.UpdateBeamsConfig:input_type -> teleport.beams.v1.UpdateBeamsConfigRequest
+ 6, // 8: teleport.beams.v1.BeamsConfigService.DeleteBeamsConfig:input_type -> teleport.beams.v1.DeleteBeamsConfigRequest
+ 1, // 9: teleport.beams.v1.BeamsConfigService.GetBeamsConfig:output_type -> teleport.beams.v1.GetBeamsConfigResponse
+ 3, // 10: teleport.beams.v1.BeamsConfigService.CreateBeamsConfig:output_type -> teleport.beams.v1.CreateBeamsConfigResponse
+ 5, // 11: teleport.beams.v1.BeamsConfigService.UpdateBeamsConfig:output_type -> teleport.beams.v1.UpdateBeamsConfigResponse
+ 7, // 12: teleport.beams.v1.BeamsConfigService.DeleteBeamsConfig:output_type -> teleport.beams.v1.DeleteBeamsConfigResponse
+ 9, // [9:13] is the sub-list for method output_type
+ 5, // [5:9] is the sub-list for method input_type
+ 5, // [5:5] is the sub-list for extension type_name
+ 5, // [5:5] is the sub-list for extension extendee
+ 0, // [0:5] is the sub-list for field type_name
+}
+
+func init() { file_teleport_beams_v1_beams_config_service_proto_init() }
+func file_teleport_beams_v1_beams_config_service_proto_init() {
+ if File_teleport_beams_v1_beams_config_service_proto != nil {
+ return
+ }
+ file_teleport_beams_v1_beams_config_proto_init()
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_beams_v1_beams_config_service_proto_rawDesc), len(file_teleport_beams_v1_beams_config_service_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 8,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_teleport_beams_v1_beams_config_service_proto_goTypes,
+ DependencyIndexes: file_teleport_beams_v1_beams_config_service_proto_depIdxs,
+ MessageInfos: file_teleport_beams_v1_beams_config_service_proto_msgTypes,
+ }.Build()
+ File_teleport_beams_v1_beams_config_service_proto = out.File
+ file_teleport_beams_v1_beams_config_service_proto_goTypes = nil
+ file_teleport_beams_v1_beams_config_service_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/beams/v1/beams_config_service.pb.go b/api/gen/proto/go/teleport/beams/v1/beams_config_service_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/beams/v1/beams_config_service.pb.go
rename to api/gen/proto/go/teleport/beams/v1/beams_config_service_protoopaque.pb.go
index 472cfcaf423..8a9a5a474ea 100644
--- a/api/gen/proto/go/teleport/beams/v1/beams_config_service.pb.go
+++ b/api/gen/proto/go/teleport/beams/v1/beams_config_service_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/beams/v1/beams_config_service.proto
+//go:build !teleport_protohybrid
+
package beamsv1
import (
diff --git a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction.pb.go b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction.pb.go
rename to api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protohybrid.pb.go
index 65825f491eb..c0547cd2cd3 100644
--- a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction.pb.go
+++ b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clientiprestriction/v1/clientiprestriction.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package clientiprestrictionv1
diff --git a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protoopaque.pb.go b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protoopaque.pb.go
index 7416595beeb..5b05f84fc13 100644
--- a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clientiprestriction/v1/clientiprestriction.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package clientiprestrictionv1
diff --git a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service.pb.go b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service.pb.go
rename to api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protohybrid.pb.go
index 48db829a296..c85a869d9d7 100644
--- a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service.pb.go
+++ b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clientiprestriction/v1/clientiprestriction_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package clientiprestrictionv1
diff --git a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protoopaque.pb.go b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protoopaque.pb.go
index 9f50a8b8ea2..c3b485c1705 100644
--- a/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clientiprestriction/v1/clientiprestriction_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package clientiprestrictionv1
diff --git a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph.pb.go b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/clusterconfig/v1/access_graph.pb.go
rename to api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protohybrid.pb.go
index 1cdc3812f48..5a606303311 100644
--- a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph.pb.go
+++ b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clusterconfig/v1/access_graph.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package clusterconfigv1
diff --git a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protoopaque.pb.go b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protoopaque.pb.go
index 966450c0527..98853da17c9 100644
--- a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clusterconfig/v1/access_graph.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package clusterconfigv1
diff --git a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings.pb.go b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings.pb.go
rename to api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protohybrid.pb.go
index a6ae823b865..188055f5bbb 100644
--- a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings.pb.go
+++ b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clusterconfig/v1/access_graph_settings.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package clusterconfigv1
diff --git a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protoopaque.pb.go b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protoopaque.pb.go
index 432dfe462af..a1ec968466e 100644
--- a/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clusterconfig/v1/access_graph_settings.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package clusterconfigv1
diff --git a/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service.pb.go b/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service.pb.go
rename to api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protohybrid.pb.go
index 95f92d6fa3f..d9da0dad23d 100644
--- a/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service.pb.go
+++ b/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clusterconfig/v1/clusterconfig_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package clusterconfigv1
diff --git a/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protoopaque.pb.go b/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protoopaque.pb.go
index f4ffafb00fc..437b01ad794 100644
--- a/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/clusterconfig/v1/clusterconfig_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package clusterconfigv1
diff --git a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel.pb.go b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/crownjewel/v1/crownjewel.pb.go
rename to api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protohybrid.pb.go
index c1bae988df8..78a82636a5f 100644
--- a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel.pb.go
+++ b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/crownjewel/v1/crownjewel.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package crownjewelv1
diff --git a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protoopaque.pb.go b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protoopaque.pb.go
index 8f62dfb2c35..0c330599578 100644
--- a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/crownjewel/v1/crownjewel.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package crownjewelv1
diff --git a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service.pb.go b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service.pb.go
rename to api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protohybrid.pb.go
index 399d57a7735..4f4c8ff9261 100644
--- a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service.pb.go
+++ b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/crownjewel/v1/crownjewel_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package crownjewelv1
diff --git a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protoopaque.pb.go b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protoopaque.pb.go
index fada628cb5e..9c4ea643ce2 100644
--- a/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/crownjewel/v1/crownjewel_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package crownjewelv1
diff --git a/api/gen/proto/go/teleport/dbobject/v1/dbobject.pb.go b/api/gen/proto/go/teleport/dbobject/v1/dbobject_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/dbobject/v1/dbobject.pb.go
rename to api/gen/proto/go/teleport/dbobject/v1/dbobject_protohybrid.pb.go
index 8eef2e9379b..cbe8ba51815 100644
--- a/api/gen/proto/go/teleport/dbobject/v1/dbobject.pb.go
+++ b/api/gen/proto/go/teleport/dbobject/v1/dbobject_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobject/v1/dbobject.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package dbobjectv1
diff --git a/api/gen/proto/go/teleport/dbobject/v1/dbobject_protoopaque.pb.go b/api/gen/proto/go/teleport/dbobject/v1/dbobject_protoopaque.pb.go
index 726912eb8a2..652137bbfa8 100644
--- a/api/gen/proto/go/teleport/dbobject/v1/dbobject_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/dbobject/v1/dbobject_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobject/v1/dbobject.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package dbobjectv1
diff --git a/api/gen/proto/go/teleport/dbobject/v1/dbobject_service.pb.go b/api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/dbobject/v1/dbobject_service.pb.go
rename to api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protohybrid.pb.go
index 3998de5d6fa..e742fe47b44 100644
--- a/api/gen/proto/go/teleport/dbobject/v1/dbobject_service.pb.go
+++ b/api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobject/v1/dbobject_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package dbobjectv1
diff --git a/api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protoopaque.pb.go b/api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protoopaque.pb.go
index b75986c3b5d..b7e48dfdb27 100644
--- a/api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/dbobject/v1/dbobject_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobject/v1/dbobject_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package dbobjectv1
diff --git a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule.pb.go b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule.pb.go
rename to api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protohybrid.pb.go
index 18f33a46270..c72f5c437c4 100644
--- a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule.pb.go
+++ b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobjectimportrule/v1/dbobjectimportrule.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package dbobjectimportrulev1
diff --git a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protoopaque.pb.go b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protoopaque.pb.go
index efa2f50a333..1ed83b35b7c 100644
--- a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobjectimportrule/v1/dbobjectimportrule.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package dbobjectimportrulev1
diff --git a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service.pb.go b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service.pb.go
rename to api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protohybrid.pb.go
index ba06f5bab87..ba632da34d2 100644
--- a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service.pb.go
+++ b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobjectimportrule/v1/dbobjectimportrule_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package dbobjectimportrulev1
diff --git a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protoopaque.pb.go b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protoopaque.pb.go
index 9ee71f1eb11..2650e0ce7d0 100644
--- a/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dbobjectimportrule/v1/dbobjectimportrule_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package dbobjectimportrulev1
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/database_access.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/database_access_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/database_access.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/database_access_protohybrid.pb.go
index 7de14f39a88..bb592128623 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/database_access.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/database_access_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/database_access.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/database_access_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/database_access_protoopaque.pb.go
index cae28e186d0..6dc9c194d3e 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/database_access_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/database_access_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/database_access.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/decision_service.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/decision_service.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protohybrid.pb.go
index b536166e818..20cca8bb9a3 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/decision_service.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/decision_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protoopaque.pb.go
index 7a1047d422a..e642950c1d7 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/decision_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/decision_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protohybrid.pb.go
index 6ef4c141c18..54f7852ffc2 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/denial_metadata.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protoopaque.pb.go
index 956786dd2d4..216d4fe1f45 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/denial_metadata.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protohybrid.pb.go
index 9bb8bea545d..7a826b51a68 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/enforcement_feature.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protoopaque.pb.go
index f0ea53be8ef..0a2f8a79382 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/enforcement_feature.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protohybrid.pb.go
index a47b9c74a20..6a3216e73a1 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/permit_metadata.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protoopaque.pb.go
index 4f26a4617de..33528431634 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/permit_metadata.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/request_metadata.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protohybrid.pb.go
index 14f4454a438..585195d4c67 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/request_metadata.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protoopaque.pb.go
index d2cc65a1635..8c9b15f2eec 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/request_metadata_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/request_metadata.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/resource.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/resource_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/resource.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/resource_protohybrid.pb.go
index e05a2c395c3..db9dd3b0fa3 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/resource.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/resource_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/resource.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/resource_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/resource_protoopaque.pb.go
index b7839803a7a..01b5d9554ef 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/resource_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/resource_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/resource.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/ssh_access.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protohybrid.pb.go
index 8fd19142cca..70301b7e162 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/ssh_access.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protoopaque.pb.go
index 67630abdbb0..ead8da0ef5f 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_access_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/ssh_access.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protohybrid.pb.go
index d1f646f92d6..feb6c855d84 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/ssh_identity.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protoopaque.pb.go
index d1c41e1306a..8b80cc74ee9 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/ssh_identity.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/ssh_join.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protohybrid.pb.go
index f4b0c73e238..7f577b0c499 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/ssh_join.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protoopaque.pb.go
index c59f3813d74..6fced74b446 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/ssh_join_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/ssh_join.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/decision/v1alpha1/tls_identity.pb.go
rename to api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protohybrid.pb.go
index c07af984ad8..71c785b0f48 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/tls_identity.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protoopaque.pb.go b/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protoopaque.pb.go
index 08f1698c145..17f0bd99a89 100644
--- a/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/decision/v1alpha1/tls_identity_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/decision/v1alpha1/tls_identity.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package decisionpb
diff --git a/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource.pb.go b/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/delegation/v1/delegation_session_resource.pb.go
rename to api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protohybrid.pb.go
index 1cf20497313..123089671fe 100644
--- a/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource.pb.go
+++ b/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/delegation/v1/delegation_session_resource.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package delegationv1
diff --git a/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protoopaque.pb.go b/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protoopaque.pb.go
index 382b09ec7d9..a7b8c0df0e3 100644
--- a/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/delegation/v1/delegation_session_resource_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/delegation/v1/delegation_session_resource.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package delegationv1
diff --git a/api/gen/proto/go/teleport/delegation/v1/delegation_session_service.pb.go b/api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/delegation/v1/delegation_session_service.pb.go
rename to api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protohybrid.pb.go
index da58a95dc02..3b5420b1988 100644
--- a/api/gen/proto/go/teleport/delegation/v1/delegation_session_service.pb.go
+++ b/api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/delegation/v1/delegation_session_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package delegationv1
diff --git a/api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protoopaque.pb.go b/api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protoopaque.pb.go
index a34c5983319..bbb08f16fba 100644
--- a/api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/delegation/v1/delegation_session_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/delegation/v1/delegation_session_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package delegationv1
diff --git a/api/gen/proto/go/teleport/desktop/v1/tdpb.pb.go b/api/gen/proto/go/teleport/desktop/v1/tdpb_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/desktop/v1/tdpb.pb.go
rename to api/gen/proto/go/teleport/desktop/v1/tdpb_protohybrid.pb.go
index 9241e2e2799..3cb4157f77c 100644
--- a/api/gen/proto/go/teleport/desktop/v1/tdpb.pb.go
+++ b/api/gen/proto/go/teleport/desktop/v1/tdpb_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/desktop/v1/tdpb.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package tdpbv1
diff --git a/api/gen/proto/go/teleport/desktop/v1/tdpb_protoopaque.pb.go b/api/gen/proto/go/teleport/desktop/v1/tdpb_protoopaque.pb.go
index 881401023e5..48789e7430b 100644
--- a/api/gen/proto/go/teleport/desktop/v1/tdpb_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/desktop/v1/tdpb_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/desktop/v1/tdpb.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package tdpbv1
diff --git a/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service_protohybrid.pb.go b/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service_protohybrid.pb.go
new file mode 100644
index 00000000000..970e9a1f8b5
--- /dev/null
+++ b/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service_protohybrid.pb.go
@@ -0,0 +1,253 @@
+// Copyright 2026 Gravitational, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/devicetrust/public/v1/devicetrust_service.proto
+
+//go:build teleport_protohybrid
+
+package devicetrustpublicv1
+
+import (
+ v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Request for CreatePairedDeviceEnrollToken.
+type CreatePairedDeviceEnrollTokenRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Enroll pairing token passed from the Web UI to the client on the device that's supposed to be enrolled.
+ EnrollPairingToken string `protobuf:"bytes,1,opt,name=enroll_pairing_token,json=enrollPairingToken,proto3" json:"enroll_pairing_token,omitempty"`
+ // Device collected data.
+ // Used to authorize issuance of device enrollment token.
+ DeviceData *v1.DeviceCollectedData `protobuf:"bytes,2,opt,name=device_data,json=deviceData,proto3" json:"device_data,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) Reset() {
+ *x = CreatePairedDeviceEnrollTokenRequest{}
+ mi := &file_teleport_devicetrust_public_v1_devicetrust_service_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreatePairedDeviceEnrollTokenRequest) ProtoMessage() {}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_devicetrust_public_v1_devicetrust_service_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) GetEnrollPairingToken() string {
+ if x != nil {
+ return x.EnrollPairingToken
+ }
+ return ""
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) GetDeviceData() *v1.DeviceCollectedData {
+ if x != nil {
+ return x.DeviceData
+ }
+ return nil
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) SetEnrollPairingToken(v string) {
+ x.EnrollPairingToken = v
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) SetDeviceData(v *v1.DeviceCollectedData) {
+ x.DeviceData = v
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) HasDeviceData() bool {
+ if x == nil {
+ return false
+ }
+ return x.DeviceData != nil
+}
+
+func (x *CreatePairedDeviceEnrollTokenRequest) ClearDeviceData() {
+ x.DeviceData = nil
+}
+
+type CreatePairedDeviceEnrollTokenRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Enroll pairing token passed from the Web UI to the client on the device that's supposed to be enrolled.
+ EnrollPairingToken string
+ // Device collected data.
+ // Used to authorize issuance of device enrollment token.
+ DeviceData *v1.DeviceCollectedData
+}
+
+func (b0 CreatePairedDeviceEnrollTokenRequest_builder) Build() *CreatePairedDeviceEnrollTokenRequest {
+ m0 := &CreatePairedDeviceEnrollTokenRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.EnrollPairingToken = b.EnrollPairingToken
+ x.DeviceData = b.DeviceData
+ return m0
+}
+
+// Response for CreatePairedDeviceEnrollToken.
+type CreatePairedDeviceEnrollTokenResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ DeviceEnrollToken *v1.DeviceEnrollToken `protobuf:"bytes,1,opt,name=device_enroll_token,json=deviceEnrollToken,proto3" json:"device_enroll_token,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) Reset() {
+ *x = CreatePairedDeviceEnrollTokenResponse{}
+ mi := &file_teleport_devicetrust_public_v1_devicetrust_service_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreatePairedDeviceEnrollTokenResponse) ProtoMessage() {}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_devicetrust_public_v1_devicetrust_service_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) GetDeviceEnrollToken() *v1.DeviceEnrollToken {
+ if x != nil {
+ return x.DeviceEnrollToken
+ }
+ return nil
+}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) SetDeviceEnrollToken(v *v1.DeviceEnrollToken) {
+ x.DeviceEnrollToken = v
+}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) HasDeviceEnrollToken() bool {
+ if x == nil {
+ return false
+ }
+ return x.DeviceEnrollToken != nil
+}
+
+func (x *CreatePairedDeviceEnrollTokenResponse) ClearDeviceEnrollToken() {
+ x.DeviceEnrollToken = nil
+}
+
+type CreatePairedDeviceEnrollTokenResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ DeviceEnrollToken *v1.DeviceEnrollToken
+}
+
+func (b0 CreatePairedDeviceEnrollTokenResponse_builder) Build() *CreatePairedDeviceEnrollTokenResponse {
+ m0 := &CreatePairedDeviceEnrollTokenResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.DeviceEnrollToken = b.DeviceEnrollToken
+ return m0
+}
+
+var File_teleport_devicetrust_public_v1_devicetrust_service_proto protoreflect.FileDescriptor
+
+const file_teleport_devicetrust_public_v1_devicetrust_service_proto_rawDesc = "" +
+ "\n" +
+ "8teleport/devicetrust/public/v1/devicetrust_service.proto\x12\x1eteleport.devicetrust.public.v1\x1a3teleport/devicetrust/v1/device_collected_data.proto\x1a1teleport/devicetrust/v1/device_enroll_token.proto\"\xa7\x01\n" +
+ "$CreatePairedDeviceEnrollTokenRequest\x120\n" +
+ "\x14enroll_pairing_token\x18\x01 \x01(\tR\x12enrollPairingToken\x12M\n" +
+ "\vdevice_data\x18\x02 \x01(\v2,.teleport.devicetrust.v1.DeviceCollectedDataR\n" +
+ "deviceData\"\x83\x01\n" +
+ "%CreatePairedDeviceEnrollTokenResponse\x12Z\n" +
+ "\x13device_enroll_token\x18\x01 \x01(\v2*.teleport.devicetrust.v1.DeviceEnrollTokenR\x11deviceEnrollToken2\xc3\x01\n" +
+ "\x12DeviceTrustService\x12\xac\x01\n" +
+ "\x1dCreatePairedDeviceEnrollToken\x12D.teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenRequest\x1aE.teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenResponseBgZegithub.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/public/v1;devicetrustpublicv1b\x06proto3"
+
+var file_teleport_devicetrust_public_v1_devicetrust_service_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
+var file_teleport_devicetrust_public_v1_devicetrust_service_proto_goTypes = []any{
+ (*CreatePairedDeviceEnrollTokenRequest)(nil), // 0: teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenRequest
+ (*CreatePairedDeviceEnrollTokenResponse)(nil), // 1: teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenResponse
+ (*v1.DeviceCollectedData)(nil), // 2: teleport.devicetrust.v1.DeviceCollectedData
+ (*v1.DeviceEnrollToken)(nil), // 3: teleport.devicetrust.v1.DeviceEnrollToken
+}
+var file_teleport_devicetrust_public_v1_devicetrust_service_proto_depIdxs = []int32{
+ 2, // 0: teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenRequest.device_data:type_name -> teleport.devicetrust.v1.DeviceCollectedData
+ 3, // 1: teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenResponse.device_enroll_token:type_name -> teleport.devicetrust.v1.DeviceEnrollToken
+ 0, // 2: teleport.devicetrust.public.v1.DeviceTrustService.CreatePairedDeviceEnrollToken:input_type -> teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenRequest
+ 1, // 3: teleport.devicetrust.public.v1.DeviceTrustService.CreatePairedDeviceEnrollToken:output_type -> teleport.devicetrust.public.v1.CreatePairedDeviceEnrollTokenResponse
+ 3, // [3:4] is the sub-list for method output_type
+ 2, // [2:3] is the sub-list for method input_type
+ 2, // [2:2] is the sub-list for extension type_name
+ 2, // [2:2] is the sub-list for extension extendee
+ 0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_teleport_devicetrust_public_v1_devicetrust_service_proto_init() }
+func file_teleport_devicetrust_public_v1_devicetrust_service_proto_init() {
+ if File_teleport_devicetrust_public_v1_devicetrust_service_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_devicetrust_public_v1_devicetrust_service_proto_rawDesc), len(file_teleport_devicetrust_public_v1_devicetrust_service_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 2,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_teleport_devicetrust_public_v1_devicetrust_service_proto_goTypes,
+ DependencyIndexes: file_teleport_devicetrust_public_v1_devicetrust_service_proto_depIdxs,
+ MessageInfos: file_teleport_devicetrust_public_v1_devicetrust_service_proto_msgTypes,
+ }.Build()
+ File_teleport_devicetrust_public_v1_devicetrust_service_proto = out.File
+ file_teleport_devicetrust_public_v1_devicetrust_service_proto_goTypes = nil
+ file_teleport_devicetrust_public_v1_devicetrust_service_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service.pb.go b/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service.pb.go
rename to api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service_protoopaque.pb.go
index 9f6bba252ef..204ace346ca 100644
--- a/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/public/v1/devicetrust_service_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/devicetrust/public/v1/devicetrust_service.proto
+//go:build !teleport_protohybrid
+
package devicetrustpublicv1
import (
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/assert_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/assert_protohybrid.pb.go
index 1a29047f407..9ec07f4b3a9 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/assert.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/assert_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/assert.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/assert_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/assert_protoopaque.pb.go
index c1208e53996..1addd3a18d1 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/assert_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/assert_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/assert.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protohybrid.pb.go
index c12cf94b833..ed2f15b766d 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/authenticate_challenge.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protoopaque.pb.go
index a88fc4ebc1a..7175a212242 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/authenticate_challenge.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device_collected_data.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protohybrid.pb.go
index 76732156287..e702a674cd1 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_collected_data.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protoopaque.pb.go
index d0627f48bff..79e518634cc 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_collected_data_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_collected_data.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protohybrid.pb.go
index c117d22e5e1..f83c4816046 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_confirmation_token.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protoopaque.pb.go
index 89006470baf..5ed587f4c8e 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_confirmation_token.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protohybrid.pb.go
index 48db396eead..bb3d638903a 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_enroll_token.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protoopaque.pb.go
index 85d4d5a815b..72a87440fa2 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_enroll_token.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_profile.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_profile_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device_profile.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_profile_protohybrid.pb.go
index e83963964e0..fca5e4e26cb 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_profile.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_profile_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_profile.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_profile_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_profile_protoopaque.pb.go
index 5bb24447dd8..1d01c6780bc 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_profile_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_profile_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_profile.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_protohybrid.pb.go
index 63b71caadfb..8fc5bebdb5e 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_protoopaque.pb.go
index 65b604060df..f5e5963aad0 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_source.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_source_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device_source.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_source_protohybrid.pb.go
index 5153a14ffa6..8f5e9899098 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_source.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_source_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_source.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_source_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_source_protoopaque.pb.go
index 1b6cc0bfe16..ce66cc6a33e 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_source_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_source_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_source.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_web_token.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/device_web_token.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protohybrid.pb.go
index 8638b044f6e..e98765748ef 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_web_token.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_web_token.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protoopaque.pb.go
index 51b519762b1..0c9f80b22f8 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/device_web_token_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/device_web_token.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protohybrid.pb.go
index 7df2f802672..b01eab7ff1e 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/devicetrust_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protoopaque.pb.go
index 80424925605..77aea838fe4 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/devicetrust_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing_protohybrid.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing_protohybrid.pb.go
new file mode 100644
index 00000000000..dc77a3358a8
--- /dev/null
+++ b/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing_protohybrid.pb.go
@@ -0,0 +1,607 @@
+// Copyright 2026 Gravitational, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/devicetrust/v1/enroll_pairing.proto
+
+//go:build teleport_protohybrid
+
+package devicetrustv1
+
+import (
+ v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// EnrollPairingState is the state of an EnrollPairing.
+//
+// The full state machine is:
+//
+// ENROLL_PAIRING_STATE_AWAITING_DEVICE ->
+// ENROLL_PAIRING_STATE_AWAITING_APPROVAL ->
+// ENROLL_PAIRING_STATE_APPROVED
+//
+// ENROLL_PAIRING_STATE_AWAITING_DEVICE is set by CreateEnrollPairing.
+// Transitions to ENROLL_PAIRING_STATE_AWAITING_APPROVAL and
+// ENROLL_PAIRING_STATE_APPROVED are driven by the mobile app and by user
+// approval respectively.
+type EnrollPairingState int32
+
+const (
+ EnrollPairingState_ENROLL_PAIRING_STATE_UNSPECIFIED EnrollPairingState = 0
+ // Set when the Web UI creates the pairing. The pairing is waiting for the
+ // mobile app to read the token and call the public Device Trust service.
+ EnrollPairingState_ENROLL_PAIRING_STATE_AWAITING_DEVICE EnrollPairingState = 1
+ // Set when the mobile app has presented the token to the public Device
+ // Trust service. The pairing is waiting for the Web UI user to approve the
+ // request with MFA.
+ EnrollPairingState_ENROLL_PAIRING_STATE_AWAITING_APPROVAL EnrollPairingState = 2
+ // Set after the Web UI user has approved the request with MFA. The mobile
+ // app may now retrieve the enrollment token.
+ EnrollPairingState_ENROLL_PAIRING_STATE_APPROVED EnrollPairingState = 3
+)
+
+// Enum value maps for EnrollPairingState.
+var (
+ EnrollPairingState_name = map[int32]string{
+ 0: "ENROLL_PAIRING_STATE_UNSPECIFIED",
+ 1: "ENROLL_PAIRING_STATE_AWAITING_DEVICE",
+ 2: "ENROLL_PAIRING_STATE_AWAITING_APPROVAL",
+ 3: "ENROLL_PAIRING_STATE_APPROVED",
+ }
+ EnrollPairingState_value = map[string]int32{
+ "ENROLL_PAIRING_STATE_UNSPECIFIED": 0,
+ "ENROLL_PAIRING_STATE_AWAITING_DEVICE": 1,
+ "ENROLL_PAIRING_STATE_AWAITING_APPROVAL": 2,
+ "ENROLL_PAIRING_STATE_APPROVED": 3,
+ }
+)
+
+func (x EnrollPairingState) Enum() *EnrollPairingState {
+ p := new(EnrollPairingState)
+ *p = x
+ return p
+}
+
+func (x EnrollPairingState) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (EnrollPairingState) Descriptor() protoreflect.EnumDescriptor {
+ return file_teleport_devicetrust_v1_enroll_pairing_proto_enumTypes[0].Descriptor()
+}
+
+func (EnrollPairingState) Type() protoreflect.EnumType {
+ return &file_teleport_devicetrust_v1_enroll_pairing_proto_enumTypes[0]
+}
+
+func (x EnrollPairingState) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// EnrollPairing is a short-lived, single-use ceremony that pairs a Web UI
+// session with a Teleport Verify mobile app, mediated by a token encoded in a
+// QR code.
+//
+// One pairing is active per user at a time, with a 5-minute TTL. Pairings are
+// deleted on TTL expiration or successful enrollment. The pairing's
+// metadata.name is the owning user's name.
+//
+// See the "Managing EnrollPairing" section of RFD 32e for more details.
+type EnrollPairing struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+ SubKind string `protobuf:"bytes,2,opt,name=sub_kind,json=subKind,proto3" json:"sub_kind,omitempty"`
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+ Metadata *v1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ Spec *EnrollPairingSpec `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"`
+ Status *EnrollPairingStatus `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EnrollPairing) Reset() {
+ *x = EnrollPairing{}
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EnrollPairing) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnrollPairing) ProtoMessage() {}
+
+func (x *EnrollPairing) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *EnrollPairing) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *EnrollPairing) GetSubKind() string {
+ if x != nil {
+ return x.SubKind
+ }
+ return ""
+}
+
+func (x *EnrollPairing) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *EnrollPairing) GetMetadata() *v1.Metadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *EnrollPairing) GetSpec() *EnrollPairingSpec {
+ if x != nil {
+ return x.Spec
+ }
+ return nil
+}
+
+func (x *EnrollPairing) GetStatus() *EnrollPairingStatus {
+ if x != nil {
+ return x.Status
+ }
+ return nil
+}
+
+func (x *EnrollPairing) SetKind(v string) {
+ x.Kind = v
+}
+
+func (x *EnrollPairing) SetSubKind(v string) {
+ x.SubKind = v
+}
+
+func (x *EnrollPairing) SetVersion(v string) {
+ x.Version = v
+}
+
+func (x *EnrollPairing) SetMetadata(v *v1.Metadata) {
+ x.Metadata = v
+}
+
+func (x *EnrollPairing) SetSpec(v *EnrollPairingSpec) {
+ x.Spec = v
+}
+
+func (x *EnrollPairing) SetStatus(v *EnrollPairingStatus) {
+ x.Status = v
+}
+
+func (x *EnrollPairing) HasMetadata() bool {
+ if x == nil {
+ return false
+ }
+ return x.Metadata != nil
+}
+
+func (x *EnrollPairing) HasSpec() bool {
+ if x == nil {
+ return false
+ }
+ return x.Spec != nil
+}
+
+func (x *EnrollPairing) HasStatus() bool {
+ if x == nil {
+ return false
+ }
+ return x.Status != nil
+}
+
+func (x *EnrollPairing) ClearMetadata() {
+ x.Metadata = nil
+}
+
+func (x *EnrollPairing) ClearSpec() {
+ x.Spec = nil
+}
+
+func (x *EnrollPairing) ClearStatus() {
+ x.Status = nil
+}
+
+type EnrollPairing_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ Kind string
+ SubKind string
+ Version string
+ Metadata *v1.Metadata
+ Spec *EnrollPairingSpec
+ Status *EnrollPairingStatus
+}
+
+func (b0 EnrollPairing_builder) Build() *EnrollPairing {
+ m0 := &EnrollPairing{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Kind = b.Kind
+ x.SubKind = b.SubKind
+ x.Version = b.Version
+ x.Metadata = b.Metadata
+ x.Spec = b.Spec
+ x.Status = b.Status
+ return m0
+}
+
+// EnrollPairingSpec is the owner-defined section of an EnrollPairing. It is
+// currently empty - every property of an EnrollPairing is server-driven.
+type EnrollPairingSpec struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EnrollPairingSpec) Reset() {
+ *x = EnrollPairingSpec{}
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EnrollPairingSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnrollPairingSpec) ProtoMessage() {}
+
+func (x *EnrollPairingSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+type EnrollPairingSpec_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 EnrollPairingSpec_builder) Build() *EnrollPairingSpec {
+ m0 := &EnrollPairingSpec{}
+ b, x := &b0, m0
+ _, _ = b, x
+ return m0
+}
+
+// EnrollPairingStatus holds the runtime state of an EnrollPairing.
+type EnrollPairingStatus struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Current state of the pairing.
+ State EnrollPairingState `protobuf:"varint,1,opt,name=state,proto3,enum=teleport.devicetrust.v1.EnrollPairingState" json:"state,omitempty"`
+ // Pairing token to be encoded into a QR code by the Web UI.
+ Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
+ // Identifying data about the device, submitted by the mobile app with
+ // CreatePairedDeviceEnrollToken and persisted on the transition to
+ // ENROLL_PAIRING_STATE_AWAITING_APPROVAL. The Web UI uses it to show the user
+ // which device is being enrolled before they approve. os_type and
+ // serial_number also gate retries of CreatePairedDeviceEnrollToken so that
+ // only the original device can retry the request.
+ Device *EnrollPairingDevice `protobuf:"bytes,3,opt,name=device,proto3" json:"device,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EnrollPairingStatus) Reset() {
+ *x = EnrollPairingStatus{}
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EnrollPairingStatus) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnrollPairingStatus) ProtoMessage() {}
+
+func (x *EnrollPairingStatus) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *EnrollPairingStatus) GetState() EnrollPairingState {
+ if x != nil {
+ return x.State
+ }
+ return EnrollPairingState_ENROLL_PAIRING_STATE_UNSPECIFIED
+}
+
+func (x *EnrollPairingStatus) GetToken() string {
+ if x != nil {
+ return x.Token
+ }
+ return ""
+}
+
+func (x *EnrollPairingStatus) GetDevice() *EnrollPairingDevice {
+ if x != nil {
+ return x.Device
+ }
+ return nil
+}
+
+func (x *EnrollPairingStatus) SetState(v EnrollPairingState) {
+ x.State = v
+}
+
+func (x *EnrollPairingStatus) SetToken(v string) {
+ x.Token = v
+}
+
+func (x *EnrollPairingStatus) SetDevice(v *EnrollPairingDevice) {
+ x.Device = v
+}
+
+func (x *EnrollPairingStatus) HasDevice() bool {
+ if x == nil {
+ return false
+ }
+ return x.Device != nil
+}
+
+func (x *EnrollPairingStatus) ClearDevice() {
+ x.Device = nil
+}
+
+type EnrollPairingStatus_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Current state of the pairing.
+ State EnrollPairingState
+ // Pairing token to be encoded into a QR code by the Web UI.
+ Token string
+ // Identifying data about the device, submitted by the mobile app with
+ // CreatePairedDeviceEnrollToken and persisted on the transition to
+ // ENROLL_PAIRING_STATE_AWAITING_APPROVAL. The Web UI uses it to show the user
+ // which device is being enrolled before they approve. os_type and
+ // serial_number also gate retries of CreatePairedDeviceEnrollToken so that
+ // only the original device can retry the request.
+ Device *EnrollPairingDevice
+}
+
+func (b0 EnrollPairingStatus_builder) Build() *EnrollPairingStatus {
+ m0 := &EnrollPairingStatus{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.State = b.State
+ x.Token = b.Token
+ x.Device = b.Device
+ return m0
+}
+
+// EnrollPairingDevice is a client-submitted description of the device. It is
+// presented to the user in the Web UI before they approve enroll pairing.
+// os_type and serial_number are also used to gate retries of
+// CreatePairedDeviceEnrollToken.
+type EnrollPairingDevice struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Device operating system.
+ OsType OSType `protobuf:"varint,1,opt,name=os_type,json=osType,proto3,enum=teleport.devicetrust.v1.OSType" json:"os_type,omitempty"`
+ // Device serial number.
+ SerialNumber string `protobuf:"bytes,2,opt,name=serial_number,json=serialNumber,proto3" json:"serial_number,omitempty"`
+ // OS version number, without the leading 'v'.
+ // Example: "13.2.1".
+ OsVersion string `protobuf:"bytes,3,opt,name=os_version,json=osVersion,proto3" json:"os_version,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *EnrollPairingDevice) Reset() {
+ *x = EnrollPairingDevice{}
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *EnrollPairingDevice) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*EnrollPairingDevice) ProtoMessage() {}
+
+func (x *EnrollPairingDevice) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *EnrollPairingDevice) GetOsType() OSType {
+ if x != nil {
+ return x.OsType
+ }
+ return OSType_OS_TYPE_UNSPECIFIED
+}
+
+func (x *EnrollPairingDevice) GetSerialNumber() string {
+ if x != nil {
+ return x.SerialNumber
+ }
+ return ""
+}
+
+func (x *EnrollPairingDevice) GetOsVersion() string {
+ if x != nil {
+ return x.OsVersion
+ }
+ return ""
+}
+
+func (x *EnrollPairingDevice) SetOsType(v OSType) {
+ x.OsType = v
+}
+
+func (x *EnrollPairingDevice) SetSerialNumber(v string) {
+ x.SerialNumber = v
+}
+
+func (x *EnrollPairingDevice) SetOsVersion(v string) {
+ x.OsVersion = v
+}
+
+type EnrollPairingDevice_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Device operating system.
+ OsType OSType
+ // Device serial number.
+ SerialNumber string
+ // OS version number, without the leading 'v'.
+ // Example: "13.2.1".
+ OsVersion string
+}
+
+func (b0 EnrollPairingDevice_builder) Build() *EnrollPairingDevice {
+ m0 := &EnrollPairingDevice{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.OsType = b.OsType
+ x.SerialNumber = b.SerialNumber
+ x.OsVersion = b.OsVersion
+ return m0
+}
+
+var File_teleport_devicetrust_v1_enroll_pairing_proto protoreflect.FileDescriptor
+
+const file_teleport_devicetrust_v1_enroll_pairing_proto_rawDesc = "" +
+ "\n" +
+ ",teleport/devicetrust/v1/enroll_pairing.proto\x12\x17teleport.devicetrust.v1\x1a%teleport/devicetrust/v1/os_type.proto\x1a!teleport/header/v1/metadata.proto\"\x98\x02\n" +
+ "\rEnrollPairing\x12\x12\n" +
+ "\x04kind\x18\x01 \x01(\tR\x04kind\x12\x19\n" +
+ "\bsub_kind\x18\x02 \x01(\tR\asubKind\x12\x18\n" +
+ "\aversion\x18\x03 \x01(\tR\aversion\x128\n" +
+ "\bmetadata\x18\x04 \x01(\v2\x1c.teleport.header.v1.MetadataR\bmetadata\x12>\n" +
+ "\x04spec\x18\x05 \x01(\v2*.teleport.devicetrust.v1.EnrollPairingSpecR\x04spec\x12D\n" +
+ "\x06status\x18\x06 \x01(\v2,.teleport.devicetrust.v1.EnrollPairingStatusR\x06status\"\x13\n" +
+ "\x11EnrollPairingSpec\"\xb4\x01\n" +
+ "\x13EnrollPairingStatus\x12A\n" +
+ "\x05state\x18\x01 \x01(\x0e2+.teleport.devicetrust.v1.EnrollPairingStateR\x05state\x12\x14\n" +
+ "\x05token\x18\x02 \x01(\tR\x05token\x12D\n" +
+ "\x06device\x18\x03 \x01(\v2,.teleport.devicetrust.v1.EnrollPairingDeviceR\x06device\"\x93\x01\n" +
+ "\x13EnrollPairingDevice\x128\n" +
+ "\aos_type\x18\x01 \x01(\x0e2\x1f.teleport.devicetrust.v1.OSTypeR\x06osType\x12#\n" +
+ "\rserial_number\x18\x02 \x01(\tR\fserialNumber\x12\x1d\n" +
+ "\n" +
+ "os_version\x18\x03 \x01(\tR\tosVersion*\xb3\x01\n" +
+ "\x12EnrollPairingState\x12$\n" +
+ " ENROLL_PAIRING_STATE_UNSPECIFIED\x10\x00\x12(\n" +
+ "$ENROLL_PAIRING_STATE_AWAITING_DEVICE\x10\x01\x12*\n" +
+ "&ENROLL_PAIRING_STATE_AWAITING_APPROVAL\x10\x02\x12!\n" +
+ "\x1dENROLL_PAIRING_STATE_APPROVED\x10\x03BZZXgithub.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1;devicetrustv1b\x06proto3"
+
+var file_teleport_devicetrust_v1_enroll_pairing_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
+var file_teleport_devicetrust_v1_enroll_pairing_proto_goTypes = []any{
+ (EnrollPairingState)(0), // 0: teleport.devicetrust.v1.EnrollPairingState
+ (*EnrollPairing)(nil), // 1: teleport.devicetrust.v1.EnrollPairing
+ (*EnrollPairingSpec)(nil), // 2: teleport.devicetrust.v1.EnrollPairingSpec
+ (*EnrollPairingStatus)(nil), // 3: teleport.devicetrust.v1.EnrollPairingStatus
+ (*EnrollPairingDevice)(nil), // 4: teleport.devicetrust.v1.EnrollPairingDevice
+ (*v1.Metadata)(nil), // 5: teleport.header.v1.Metadata
+ (OSType)(0), // 6: teleport.devicetrust.v1.OSType
+}
+var file_teleport_devicetrust_v1_enroll_pairing_proto_depIdxs = []int32{
+ 5, // 0: teleport.devicetrust.v1.EnrollPairing.metadata:type_name -> teleport.header.v1.Metadata
+ 2, // 1: teleport.devicetrust.v1.EnrollPairing.spec:type_name -> teleport.devicetrust.v1.EnrollPairingSpec
+ 3, // 2: teleport.devicetrust.v1.EnrollPairing.status:type_name -> teleport.devicetrust.v1.EnrollPairingStatus
+ 0, // 3: teleport.devicetrust.v1.EnrollPairingStatus.state:type_name -> teleport.devicetrust.v1.EnrollPairingState
+ 4, // 4: teleport.devicetrust.v1.EnrollPairingStatus.device:type_name -> teleport.devicetrust.v1.EnrollPairingDevice
+ 6, // 5: teleport.devicetrust.v1.EnrollPairingDevice.os_type:type_name -> teleport.devicetrust.v1.OSType
+ 6, // [6:6] is the sub-list for method output_type
+ 6, // [6:6] is the sub-list for method input_type
+ 6, // [6:6] is the sub-list for extension type_name
+ 6, // [6:6] is the sub-list for extension extendee
+ 0, // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_teleport_devicetrust_v1_enroll_pairing_proto_init() }
+func file_teleport_devicetrust_v1_enroll_pairing_proto_init() {
+ if File_teleport_devicetrust_v1_enroll_pairing_proto != nil {
+ return
+ }
+ file_teleport_devicetrust_v1_os_type_proto_init()
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_devicetrust_v1_enroll_pairing_proto_rawDesc), len(file_teleport_devicetrust_v1_enroll_pairing_proto_rawDesc)),
+ NumEnums: 1,
+ NumMessages: 4,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_teleport_devicetrust_v1_enroll_pairing_proto_goTypes,
+ DependencyIndexes: file_teleport_devicetrust_v1_enroll_pairing_proto_depIdxs,
+ EnumInfos: file_teleport_devicetrust_v1_enroll_pairing_proto_enumTypes,
+ MessageInfos: file_teleport_devicetrust_v1_enroll_pairing_proto_msgTypes,
+ }.Build()
+ File_teleport_devicetrust_v1_enroll_pairing_proto = out.File
+ file_teleport_devicetrust_v1_enroll_pairing_proto_goTypes = nil
+ file_teleport_devicetrust_v1_enroll_pairing_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing_protoopaque.pb.go
index 105b625ce78..d9b4423e0d2 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/enroll_pairing_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/enroll_pairing.proto
+//go:build !teleport_protohybrid
+
package devicetrustv1
import (
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/os_type.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/os_type_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/os_type.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/os_type_protohybrid.pb.go
index c2e2c564f10..d29a6e4b949 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/os_type.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/os_type_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/os_type.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/os_type_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/os_type_protoopaque.pb.go
index cd8c367ea8c..546e712d86e 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/os_type_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/os_type_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/os_type.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/tpm.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/tpm_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/tpm.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/tpm_protohybrid.pb.go
index fcfc7939d7d..e394c8f92df 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/tpm.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/tpm_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/tpm.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/tpm_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/tpm_protoopaque.pb.go
index a73f18f6c90..7a4fce5f9db 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/tpm_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/tpm_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/tpm.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/user_certificates.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/devicetrust/v1/user_certificates.pb.go
rename to api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protohybrid.pb.go
index cec59960080..ab20e67917c 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/user_certificates.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/user_certificates.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protoopaque.pb.go b/api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protoopaque.pb.go
index 05bbb88d000..d6e3101329d 100644
--- a/api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/devicetrust/v1/user_certificates_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/devicetrust/v1/user_certificates.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package devicetrustv1
diff --git a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig.pb.go b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig.pb.go
rename to api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protohybrid.pb.go
index 8172d5b71c1..2199cccba0c 100644
--- a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig.pb.go
+++ b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/discoveryconfig/v1/discoveryconfig.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package discoveryconfigv1
diff --git a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protoopaque.pb.go b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protoopaque.pb.go
index 22876977618..f71425284a5 100644
--- a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/discoveryconfig/v1/discoveryconfig.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package discoveryconfigv1
diff --git a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service.pb.go b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service.pb.go
rename to api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protohybrid.pb.go
index a73c68326e2..8ea57de8abc 100644
--- a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service.pb.go
+++ b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/discoveryconfig/v1/discoveryconfig_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package discoveryconfigv1
diff --git a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protoopaque.pb.go b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protoopaque.pb.go
index 69abfc7d9d4..7d92c33e0a6 100644
--- a/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/discoveryconfig/v1/discoveryconfig_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package discoveryconfigv1
diff --git a/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service.pb.go b/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service.pb.go
rename to api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protohybrid.pb.go
index c7acbeffb8f..4dbf562dc5e 100644
--- a/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service.pb.go
+++ b/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dynamicwindows/v1/dynamicwindows_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package dynamicwindowsv1
diff --git a/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protoopaque.pb.go b/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protoopaque.pb.go
index a96ad38d4df..fa66f3ddf1d 100644
--- a/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/dynamicwindows/v1/dynamicwindows_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package dynamicwindowsv1
diff --git a/api/gen/proto/go/teleport/embedding/v1/embedding.pb.go b/api/gen/proto/go/teleport/embedding/v1/embedding_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/embedding/v1/embedding.pb.go
rename to api/gen/proto/go/teleport/embedding/v1/embedding_protohybrid.pb.go
index 5e482c3daee..86c33ba6fc2 100644
--- a/api/gen/proto/go/teleport/embedding/v1/embedding.pb.go
+++ b/api/gen/proto/go/teleport/embedding/v1/embedding_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/embedding/v1/embedding.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package embeddingv1
diff --git a/api/gen/proto/go/teleport/embedding/v1/embedding_protoopaque.pb.go b/api/gen/proto/go/teleport/embedding/v1/embedding_protoopaque.pb.go
index da5430d254b..e655c6349d3 100644
--- a/api/gen/proto/go/teleport/embedding/v1/embedding_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/embedding/v1/embedding_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/embedding/v1/embedding.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package embeddingv1
diff --git a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage.pb.go b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage.pb.go
rename to api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protohybrid.pb.go
index 2a6ac02cffb..8f2cbe05e08 100644
--- a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage.pb.go
+++ b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/externalauditstorage/v1/externalauditstorage.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package externalauditstoragev1
diff --git a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protoopaque.pb.go b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protoopaque.pb.go
index caa82f0fbe9..6e1c9ea519d 100644
--- a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/externalauditstorage/v1/externalauditstorage.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package externalauditstoragev1
diff --git a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service.pb.go b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service.pb.go
rename to api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protohybrid.pb.go
index 0ae028322a8..0ba763a65e9 100644
--- a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service.pb.go
+++ b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/externalauditstorage/v1/externalauditstorage_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package externalauditstoragev1
diff --git a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protoopaque.pb.go b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protoopaque.pb.go
index 029e3ccb29c..5a1672af9c2 100644
--- a/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/externalauditstorage/v1/externalauditstorage_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package externalauditstoragev1
diff --git a/api/gen/proto/go/teleport/gitserver/v1/git_server_service.pb.go b/api/gen/proto/go/teleport/gitserver/v1/git_server_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/gitserver/v1/git_server_service.pb.go
rename to api/gen/proto/go/teleport/gitserver/v1/git_server_service_protohybrid.pb.go
index f3d0ae350d9..19844b12b94 100644
--- a/api/gen/proto/go/teleport/gitserver/v1/git_server_service.pb.go
+++ b/api/gen/proto/go/teleport/gitserver/v1/git_server_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/gitserver/v1/git_server_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package gitserverv1
diff --git a/api/gen/proto/go/teleport/gitserver/v1/git_server_service_protoopaque.pb.go b/api/gen/proto/go/teleport/gitserver/v1/git_server_service_protoopaque.pb.go
index cc86cf537f3..72f5d5bc1cd 100644
--- a/api/gen/proto/go/teleport/gitserver/v1/git_server_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/gitserver/v1/git_server_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/gitserver/v1/git_server_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package gitserverv1
diff --git a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig.pb.go b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig.pb.go
rename to api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protohybrid.pb.go
index 6eede09f428..a6b95c33744 100644
--- a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig.pb.go
+++ b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/grpcclientconfig/v1/grpcclientconfig.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package grpcclientconfigv1
diff --git a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protoopaque.pb.go b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protoopaque.pb.go
index 18bf1c66654..2cd1d6f6c50 100644
--- a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/grpcclientconfig/v1/grpcclientconfig.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package grpcclientconfigv1
diff --git a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice.pb.go b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice.pb.go
rename to api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protohybrid.pb.go
index 79b7183c835..69d6a7673ca 100644
--- a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice.pb.go
+++ b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/grpcclientconfig/v1/grpcclientconfigservice.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package grpcclientconfigv1
diff --git a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protoopaque.pb.go b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protoopaque.pb.go
index 3a3e734e229..77f3b68f1f2 100644
--- a/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/grpcclientconfig/v1/grpcclientconfigservice.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package grpcclientconfigv1
diff --git a/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service.pb.go b/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service.pb.go
rename to api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protohybrid.pb.go
index e7d41a2a0d6..da85ac6d997 100644
--- a/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service.pb.go
+++ b/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/hardwarekeyagent/v1/hardwarekeyagent_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package hardwarekeyagentv1
diff --git a/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protoopaque.pb.go b/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protoopaque.pb.go
index 7e518794826..94aca619821 100644
--- a/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/hardwarekeyagent/v1/hardwarekeyagent_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package hardwarekeyagentv1
diff --git a/api/gen/proto/go/teleport/header/v1/metadata.pb.go b/api/gen/proto/go/teleport/header/v1/metadata_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/header/v1/metadata.pb.go
rename to api/gen/proto/go/teleport/header/v1/metadata_protohybrid.pb.go
index 858c7ccbcca..d354474d1b8 100644
--- a/api/gen/proto/go/teleport/header/v1/metadata.pb.go
+++ b/api/gen/proto/go/teleport/header/v1/metadata_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/header/v1/metadata.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package headerv1
diff --git a/api/gen/proto/go/teleport/header/v1/metadata_protoopaque.pb.go b/api/gen/proto/go/teleport/header/v1/metadata_protoopaque.pb.go
index d8b20de1c64..96ac33a3698 100644
--- a/api/gen/proto/go/teleport/header/v1/metadata_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/header/v1/metadata_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/header/v1/metadata.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package headerv1
diff --git a/api/gen/proto/go/teleport/header/v1/resourceheader.pb.go b/api/gen/proto/go/teleport/header/v1/resourceheader_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/header/v1/resourceheader.pb.go
rename to api/gen/proto/go/teleport/header/v1/resourceheader_protohybrid.pb.go
index 6d7a5902962..ebbe758154b 100644
--- a/api/gen/proto/go/teleport/header/v1/resourceheader.pb.go
+++ b/api/gen/proto/go/teleport/header/v1/resourceheader_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/header/v1/resourceheader.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package headerv1
diff --git a/api/gen/proto/go/teleport/header/v1/resourceheader_protoopaque.pb.go b/api/gen/proto/go/teleport/header/v1/resourceheader_protoopaque.pb.go
index f99b200b244..a4cfd6dca0c 100644
--- a/api/gen/proto/go/teleport/header/v1/resourceheader_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/header/v1/resourceheader_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/header/v1/resourceheader.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package headerv1
diff --git a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config.pb.go b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config.pb.go
rename to api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protohybrid.pb.go
index 73a406ff261..9ae3dbfa8f0 100644
--- a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config.pb.go
+++ b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/healthcheckconfig/v1/health_check_config.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package healthcheckconfigv1
diff --git a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protoopaque.pb.go b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protoopaque.pb.go
index 6feb1ecfa30..bc26bf4147a 100644
--- a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/healthcheckconfig/v1/health_check_config.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package healthcheckconfigv1
diff --git a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service.pb.go b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service.pb.go
rename to api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protohybrid.pb.go
index efe33368b61..621b0c8df07 100644
--- a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service.pb.go
+++ b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/healthcheckconfig/v1/health_check_config_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package healthcheckconfigv1
diff --git a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protoopaque.pb.go b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protoopaque.pb.go
index 4f8a69fd2fb..11e5ec1840d 100644
--- a/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/healthcheckconfig/v1/health_check_config_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package healthcheckconfigv1
diff --git a/api/gen/proto/go/teleport/identitycenter/v1/identitycenter.pb.go b/api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/identitycenter/v1/identitycenter.pb.go
rename to api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protohybrid.pb.go
index 3b9e1751042..6af545fe02f 100644
--- a/api/gen/proto/go/teleport/identitycenter/v1/identitycenter.pb.go
+++ b/api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/identitycenter/v1/identitycenter.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package identitycenterv1
diff --git a/api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protoopaque.pb.go b/api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protoopaque.pb.go
index 328b0a47b65..e9e36b50d29 100644
--- a/api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/identitycenter/v1/identitycenter_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/identitycenter/v1/identitycenter.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package identitycenterv1
diff --git a/api/gen/proto/go/teleport/identitycenter/v1/service.pb.go b/api/gen/proto/go/teleport/identitycenter/v1/service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/identitycenter/v1/service.pb.go
rename to api/gen/proto/go/teleport/identitycenter/v1/service_protohybrid.pb.go
index b645d1511ac..aad0f7d1a04 100644
--- a/api/gen/proto/go/teleport/identitycenter/v1/service.pb.go
+++ b/api/gen/proto/go/teleport/identitycenter/v1/service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/identitycenter/v1/service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package identitycenterv1
diff --git a/api/gen/proto/go/teleport/identitycenter/v1/service_protoopaque.pb.go b/api/gen/proto/go/teleport/identitycenter/v1/service_protoopaque.pb.go
index 7d21afd7f99..931c0737f2b 100644
--- a/api/gen/proto/go/teleport/identitycenter/v1/service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/identitycenter/v1/service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/identitycenter/v1/service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package identitycenterv1
diff --git a/api/gen/proto/go/teleport/integration/v1/awsoidc_service.pb.go b/api/gen/proto/go/teleport/integration/v1/awsoidc_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/integration/v1/awsoidc_service.pb.go
rename to api/gen/proto/go/teleport/integration/v1/awsoidc_service_protohybrid.pb.go
index f73e46901bc..bc100eccd5e 100644
--- a/api/gen/proto/go/teleport/integration/v1/awsoidc_service.pb.go
+++ b/api/gen/proto/go/teleport/integration/v1/awsoidc_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/integration/v1/awsoidc_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package integrationv1
diff --git a/api/gen/proto/go/teleport/integration/v1/awsoidc_service_protoopaque.pb.go b/api/gen/proto/go/teleport/integration/v1/awsoidc_service_protoopaque.pb.go
index 01fec5addfc..17a59202968 100644
--- a/api/gen/proto/go/teleport/integration/v1/awsoidc_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/integration/v1/awsoidc_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/integration/v1/awsoidc_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package integrationv1
diff --git a/api/gen/proto/go/teleport/integration/v1/awsra_service.pb.go b/api/gen/proto/go/teleport/integration/v1/awsra_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/integration/v1/awsra_service.pb.go
rename to api/gen/proto/go/teleport/integration/v1/awsra_service_protohybrid.pb.go
index ac38256abfe..b7fbfe3856c 100644
--- a/api/gen/proto/go/teleport/integration/v1/awsra_service.pb.go
+++ b/api/gen/proto/go/teleport/integration/v1/awsra_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/integration/v1/awsra_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package integrationv1
diff --git a/api/gen/proto/go/teleport/integration/v1/awsra_service_protoopaque.pb.go b/api/gen/proto/go/teleport/integration/v1/awsra_service_protoopaque.pb.go
index 03296c1b615..2c4f1ecc016 100644
--- a/api/gen/proto/go/teleport/integration/v1/awsra_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/integration/v1/awsra_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/integration/v1/awsra_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package integrationv1
diff --git a/api/gen/proto/go/teleport/integration/v1/integration_service.pb.go b/api/gen/proto/go/teleport/integration/v1/integration_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/integration/v1/integration_service.pb.go
rename to api/gen/proto/go/teleport/integration/v1/integration_service_protohybrid.pb.go
index 3810e2fef95..5bc03ff5e1d 100644
--- a/api/gen/proto/go/teleport/integration/v1/integration_service.pb.go
+++ b/api/gen/proto/go/teleport/integration/v1/integration_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/integration/v1/integration_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package integrationv1
diff --git a/api/gen/proto/go/teleport/integration/v1/integration_service_protoopaque.pb.go b/api/gen/proto/go/teleport/integration/v1/integration_service_protoopaque.pb.go
index 9b46c1dfc99..a87e21915c8 100644
--- a/api/gen/proto/go/teleport/integration/v1/integration_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/integration/v1/integration_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/integration/v1/integration_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package integrationv1
diff --git a/api/gen/proto/go/teleport/inventory/v1/inventory_service.pb.go b/api/gen/proto/go/teleport/inventory/v1/inventory_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/inventory/v1/inventory_service.pb.go
rename to api/gen/proto/go/teleport/inventory/v1/inventory_service_protohybrid.pb.go
index 54239237e2f..de1f48ce660 100644
--- a/api/gen/proto/go/teleport/inventory/v1/inventory_service.pb.go
+++ b/api/gen/proto/go/teleport/inventory/v1/inventory_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/inventory/v1/inventory_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package inventoryv1
diff --git a/api/gen/proto/go/teleport/inventory/v1/inventory_service_protoopaque.pb.go b/api/gen/proto/go/teleport/inventory/v1/inventory_service_protoopaque.pb.go
index 514fecc78b7..bb98468b0be 100644
--- a/api/gen/proto/go/teleport/inventory/v1/inventory_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/inventory/v1/inventory_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/inventory/v1/inventory_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package inventoryv1
diff --git a/api/gen/proto/go/teleport/issuance/v1/service.pb.go b/api/gen/proto/go/teleport/issuance/v1/service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/issuance/v1/service.pb.go
rename to api/gen/proto/go/teleport/issuance/v1/service_protohybrid.pb.go
index 697e4dda22c..005c3e7d01a 100644
--- a/api/gen/proto/go/teleport/issuance/v1/service.pb.go
+++ b/api/gen/proto/go/teleport/issuance/v1/service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/issuance/v1/service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package issuancev1pb
diff --git a/api/gen/proto/go/teleport/issuance/v1/service_protoopaque.pb.go b/api/gen/proto/go/teleport/issuance/v1/service_protoopaque.pb.go
index 5c84c11f182..a00418c1dcd 100644
--- a/api/gen/proto/go/teleport/issuance/v1/service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/issuance/v1/service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/issuance/v1/service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package issuancev1pb
diff --git a/api/gen/proto/go/teleport/join/v1/joinservice.pb.go b/api/gen/proto/go/teleport/join/v1/joinservice_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/join/v1/joinservice.pb.go
rename to api/gen/proto/go/teleport/join/v1/joinservice_protohybrid.pb.go
index 92055005972..c36ba145ab4 100644
--- a/api/gen/proto/go/teleport/join/v1/joinservice.pb.go
+++ b/api/gen/proto/go/teleport/join/v1/joinservice_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/join/v1/joinservice.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package joinv1
diff --git a/api/gen/proto/go/teleport/join/v1/joinservice_protoopaque.pb.go b/api/gen/proto/go/teleport/join/v1/joinservice_protoopaque.pb.go
index f8986b18995..570a2f07888 100644
--- a/api/gen/proto/go/teleport/join/v1/joinservice_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/join/v1/joinservice_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/join/v1/joinservice.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package joinv1
diff --git a/api/gen/proto/go/teleport/kube/v1/kube_service.pb.go b/api/gen/proto/go/teleport/kube/v1/kube_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/kube/v1/kube_service.pb.go
rename to api/gen/proto/go/teleport/kube/v1/kube_service_protohybrid.pb.go
index 7139f0c1d8e..934f913b90a 100644
--- a/api/gen/proto/go/teleport/kube/v1/kube_service.pb.go
+++ b/api/gen/proto/go/teleport/kube/v1/kube_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/kube/v1/kube_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package kubev1
diff --git a/api/gen/proto/go/teleport/kube/v1/kube_service_protoopaque.pb.go b/api/gen/proto/go/teleport/kube/v1/kube_service_protoopaque.pb.go
index 76452aad3b2..03da363f2ca 100644
--- a/api/gen/proto/go/teleport/kube/v1/kube_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/kube/v1/kube_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/kube/v1/kube_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package kubev1
diff --git a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer.pb.go b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer.pb.go
rename to api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protohybrid.pb.go
index f8d503fd854..44bd6a7e91a 100644
--- a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer.pb.go
+++ b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package kubewaitingcontainerv1
diff --git a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protoopaque.pb.go b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protoopaque.pb.go
index 7630d69ced1..fd2221b298d 100644
--- a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package kubewaitingcontainerv1
diff --git a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service.pb.go b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service.pb.go
rename to api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protohybrid.pb.go
index 0a6a026e669..f04f0254a8c 100644
--- a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service.pb.go
+++ b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package kubewaitingcontainerv1
diff --git a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protoopaque.pb.go b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protoopaque.pb.go
index caeb3dda576..09cd1696cc7 100644
--- a/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package kubewaitingcontainerv1
diff --git a/api/gen/proto/go/teleport/label/v1/label.pb.go b/api/gen/proto/go/teleport/label/v1/label_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/label/v1/label.pb.go
rename to api/gen/proto/go/teleport/label/v1/label_protohybrid.pb.go
index 06fccc7b824..b3f8b0d86d0 100644
--- a/api/gen/proto/go/teleport/label/v1/label.pb.go
+++ b/api/gen/proto/go/teleport/label/v1/label_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/label/v1/label.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package labelv1
diff --git a/api/gen/proto/go/teleport/label/v1/label_protoopaque.pb.go b/api/gen/proto/go/teleport/label/v1/label_protoopaque.pb.go
index 0baecb213d9..e289b2edb6e 100644
--- a/api/gen/proto/go/teleport/label/v1/label_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/label/v1/label_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/label/v1/label.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package labelv1
diff --git a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop.pb.go b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop.pb.go
rename to api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protohybrid.pb.go
index d04ff4f6855..cdbec981643 100644
--- a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop.pb.go
+++ b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package linuxdesktopv1
diff --git a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protoopaque.pb.go b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protoopaque.pb.go
index a8451f350d7..fc768751267 100644
--- a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package linuxdesktopv1
diff --git a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service.pb.go b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service.pb.go
rename to api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protohybrid.pb.go
index 1acfa0600f8..cc31060f3cf 100644
--- a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service.pb.go
+++ b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package linuxdesktopv1
diff --git a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protoopaque.pb.go b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protoopaque.pb.go
index 6cea71e8942..8f8a9d12d7b 100644
--- a/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/linuxdesktop/v1/linux_desktop_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package linuxdesktopv1
diff --git a/api/gen/proto/go/teleport/loginrule/v1/loginrule.pb.go b/api/gen/proto/go/teleport/loginrule/v1/loginrule_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/loginrule/v1/loginrule.pb.go
rename to api/gen/proto/go/teleport/loginrule/v1/loginrule_protohybrid.pb.go
index 05e37d08d93..54cd0aaad80 100644
--- a/api/gen/proto/go/teleport/loginrule/v1/loginrule.pb.go
+++ b/api/gen/proto/go/teleport/loginrule/v1/loginrule_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/loginrule/v1/loginrule.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package loginrulev1
diff --git a/api/gen/proto/go/teleport/loginrule/v1/loginrule_protoopaque.pb.go b/api/gen/proto/go/teleport/loginrule/v1/loginrule_protoopaque.pb.go
index 29c455ab832..f4addd45d16 100644
--- a/api/gen/proto/go/teleport/loginrule/v1/loginrule_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/loginrule/v1/loginrule_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/loginrule/v1/loginrule.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package loginrulev1
diff --git a/api/gen/proto/go/teleport/loginrule/v1/loginrule_service.pb.go b/api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/loginrule/v1/loginrule_service.pb.go
rename to api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protohybrid.pb.go
index c9b9e829abd..c4283309cf5 100644
--- a/api/gen/proto/go/teleport/loginrule/v1/loginrule_service.pb.go
+++ b/api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/loginrule/v1/loginrule_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package loginrulev1
diff --git a/api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protoopaque.pb.go b/api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protoopaque.pb.go
index e40c418f3cb..2fb668b5a8f 100644
--- a/api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/loginrule/v1/loginrule_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/loginrule/v1/loginrule_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package loginrulev1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/bot_instance.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/bot_instance_protohybrid.pb.go
index 906563cb27f..6080818ce79 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_instance.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot_instance.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance_protoopaque.pb.go
index 04c0dec67f7..80b2b0c6b15 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_instance_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot_instance.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance_service.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/bot_instance_service.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protohybrid.pb.go
index 5ffab01bb9c..1c482ebacea 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_instance_service.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot_instance_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protoopaque.pb.go
index 331ff055367..ce5e49405d7 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_instance_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot_instance_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/bot.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/bot_protohybrid.pb.go
index 60cb0887433..65cc6928871 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_protoopaque.pb.go
index eb1b0956d90..6b978844734 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_service.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/bot_service.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/bot_service_protohybrid.pb.go
index f6e11f0e2e1..d533a571598 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_service.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/bot_service_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/bot_service_protoopaque.pb.go
index ef250345f06..279d8da4142 100644
--- a/api/gen/proto/go/teleport/machineid/v1/bot_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/bot_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/bot_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/federation.pb.go b/api/gen/proto/go/teleport/machineid/v1/federation_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/federation.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/federation_protohybrid.pb.go
index 792022f9bc4..9983e31d879 100644
--- a/api/gen/proto/go/teleport/machineid/v1/federation.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/federation_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/federation.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/federation_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/federation_protoopaque.pb.go
index 995d24bbe9f..dd7400e701f 100644
--- a/api/gen/proto/go/teleport/machineid/v1/federation_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/federation_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/federation.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/federation_service.pb.go b/api/gen/proto/go/teleport/machineid/v1/federation_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/federation_service.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/federation_service_protohybrid.pb.go
index 61a44136826..195aabced4c 100644
--- a/api/gen/proto/go/teleport/machineid/v1/federation_service.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/federation_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/federation_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/federation_service_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/federation_service_protoopaque.pb.go
index 61fb609199b..603cada0d3d 100644
--- a/api/gen/proto/go/teleport/machineid/v1/federation_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/federation_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/federation_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/workload_identity_service.pb.go b/api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/machineid/v1/workload_identity_service.pb.go
rename to api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protohybrid.pb.go
index 0f68b2a564a..c1d27c9c072 100644
--- a/api/gen/proto/go/teleport/machineid/v1/workload_identity_service.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/workload_identity_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protoopaque.pb.go b/api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protoopaque.pb.go
index 26b995d4991..f2108db49ec 100644
--- a/api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/machineid/v1/workload_identity_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/machineid/v1/workload_identity_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package machineidv1
diff --git a/api/gen/proto/go/teleport/mfa/v2/challenge_protohybrid.pb.go b/api/gen/proto/go/teleport/mfa/v2/challenge_protohybrid.pb.go
new file mode 100644
index 00000000000..75295ddb302
--- /dev/null
+++ b/api/gen/proto/go/teleport/mfa/v2/challenge_protohybrid.pb.go
@@ -0,0 +1,956 @@
+// Copyright 2026 Gravitational, Inc
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/mfa/v2/challenge.proto
+
+//go:build teleport_protohybrid
+
+package mfav2
+
+import (
+ v2 "github.com/gravitational/teleport/api/gen/proto/go/teleport/webauthn/v2"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// AuthenticateChallenge is a challenge for all MFA devices registered for a user.
+type AuthenticateChallenge struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Unique resource name for the issued challenge generated by the server. Should be treated as an opaque identifier
+ // and used as-is in subsequent API calls.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Webauthn credential assertion used for login/authentication ceremonies. Holds a list of allowed credentials (one
+ // for each U2F or Webauthn device registered by the user).
+ WebauthnChallenge *v2.CredentialAssertion `protobuf:"bytes,2,opt,name=webauthn_challenge,json=webauthnChallenge,proto3" json:"webauthn_challenge,omitempty"`
+ // SSO MFA challenge. If set, the client can go to the IdP redirect URL to perform an MFA check and obtain an MFA
+ // token. This token paired with the request id can be used for verification.
+ SsoChallenge *SSOChallenge `protobuf:"bytes,3,opt,name=sso_challenge,json=ssoChallenge,proto3" json:"sso_challenge,omitempty"`
+ // Browser challenge allows a user to MFA in the browser, to get a WebAuthn
+ // response that is returned to the client to be used for verification.
+ BrowserChallenge *BrowserMFAChallenge `protobuf:"bytes,4,opt,name=browser_challenge,json=browserChallenge,proto3" json:"browser_challenge,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AuthenticateChallenge) Reset() {
+ *x = AuthenticateChallenge{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AuthenticateChallenge) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticateChallenge) ProtoMessage() {}
+
+func (x *AuthenticateChallenge) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *AuthenticateChallenge) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AuthenticateChallenge) GetWebauthnChallenge() *v2.CredentialAssertion {
+ if x != nil {
+ return x.WebauthnChallenge
+ }
+ return nil
+}
+
+func (x *AuthenticateChallenge) GetSsoChallenge() *SSOChallenge {
+ if x != nil {
+ return x.SsoChallenge
+ }
+ return nil
+}
+
+func (x *AuthenticateChallenge) GetBrowserChallenge() *BrowserMFAChallenge {
+ if x != nil {
+ return x.BrowserChallenge
+ }
+ return nil
+}
+
+func (x *AuthenticateChallenge) SetName(v string) {
+ x.Name = v
+}
+
+func (x *AuthenticateChallenge) SetWebauthnChallenge(v *v2.CredentialAssertion) {
+ x.WebauthnChallenge = v
+}
+
+func (x *AuthenticateChallenge) SetSsoChallenge(v *SSOChallenge) {
+ x.SsoChallenge = v
+}
+
+func (x *AuthenticateChallenge) SetBrowserChallenge(v *BrowserMFAChallenge) {
+ x.BrowserChallenge = v
+}
+
+func (x *AuthenticateChallenge) HasWebauthnChallenge() bool {
+ if x == nil {
+ return false
+ }
+ return x.WebauthnChallenge != nil
+}
+
+func (x *AuthenticateChallenge) HasSsoChallenge() bool {
+ if x == nil {
+ return false
+ }
+ return x.SsoChallenge != nil
+}
+
+func (x *AuthenticateChallenge) HasBrowserChallenge() bool {
+ if x == nil {
+ return false
+ }
+ return x.BrowserChallenge != nil
+}
+
+func (x *AuthenticateChallenge) ClearWebauthnChallenge() {
+ x.WebauthnChallenge = nil
+}
+
+func (x *AuthenticateChallenge) ClearSsoChallenge() {
+ x.SsoChallenge = nil
+}
+
+func (x *AuthenticateChallenge) ClearBrowserChallenge() {
+ x.BrowserChallenge = nil
+}
+
+type AuthenticateChallenge_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Unique resource name for the issued challenge generated by the server. Should be treated as an opaque identifier
+ // and used as-is in subsequent API calls.
+ Name string
+ // Webauthn credential assertion used for login/authentication ceremonies. Holds a list of allowed credentials (one
+ // for each U2F or Webauthn device registered by the user).
+ WebauthnChallenge *v2.CredentialAssertion
+ // SSO MFA challenge. If set, the client can go to the IdP redirect URL to perform an MFA check and obtain an MFA
+ // token. This token paired with the request id can be used for verification.
+ SsoChallenge *SSOChallenge
+ // Browser challenge allows a user to MFA in the browser, to get a WebAuthn
+ // response that is returned to the client to be used for verification.
+ BrowserChallenge *BrowserMFAChallenge
+}
+
+func (b0 AuthenticateChallenge_builder) Build() *AuthenticateChallenge {
+ m0 := &AuthenticateChallenge{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Name = b.Name
+ x.WebauthnChallenge = b.WebauthnChallenge
+ x.SsoChallenge = b.SsoChallenge
+ x.BrowserChallenge = b.BrowserChallenge
+ return m0
+}
+
+// AuthenticateResponse is a response to AuthenticateChallenge using one of the MFA devices registered for a user.
+type AuthenticateResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Unique resource name for the issued challenge generated by the server. Should be treated as an opaque identifier
+ // and used as-is in subsequent API calls.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Response to the challenge using one of the MFA devices.
+ //
+ // Types that are valid to be assigned to Response:
+ //
+ // *AuthenticateResponse_Webauthn
+ // *AuthenticateResponse_Sso
+ // *AuthenticateResponse_Browser
+ Response isAuthenticateResponse_Response `protobuf_oneof:"response"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AuthenticateResponse) Reset() {
+ *x = AuthenticateResponse{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AuthenticateResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticateResponse) ProtoMessage() {}
+
+func (x *AuthenticateResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *AuthenticateResponse) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *AuthenticateResponse) GetResponse() isAuthenticateResponse_Response {
+ if x != nil {
+ return x.Response
+ }
+ return nil
+}
+
+func (x *AuthenticateResponse) GetWebauthn() *v2.CredentialAssertionResponse {
+ if x != nil {
+ if x, ok := x.Response.(*AuthenticateResponse_Webauthn); ok {
+ return x.Webauthn
+ }
+ }
+ return nil
+}
+
+func (x *AuthenticateResponse) GetSso() *SSOChallengeResponse {
+ if x != nil {
+ if x, ok := x.Response.(*AuthenticateResponse_Sso); ok {
+ return x.Sso
+ }
+ }
+ return nil
+}
+
+func (x *AuthenticateResponse) GetBrowser() *BrowserMFAResponse {
+ if x != nil {
+ if x, ok := x.Response.(*AuthenticateResponse_Browser); ok {
+ return x.Browser
+ }
+ }
+ return nil
+}
+
+func (x *AuthenticateResponse) SetName(v string) {
+ x.Name = v
+}
+
+func (x *AuthenticateResponse) SetWebauthn(v *v2.CredentialAssertionResponse) {
+ if v == nil {
+ x.Response = nil
+ return
+ }
+ x.Response = &AuthenticateResponse_Webauthn{v}
+}
+
+func (x *AuthenticateResponse) SetSso(v *SSOChallengeResponse) {
+ if v == nil {
+ x.Response = nil
+ return
+ }
+ x.Response = &AuthenticateResponse_Sso{v}
+}
+
+func (x *AuthenticateResponse) SetBrowser(v *BrowserMFAResponse) {
+ if v == nil {
+ x.Response = nil
+ return
+ }
+ x.Response = &AuthenticateResponse_Browser{v}
+}
+
+func (x *AuthenticateResponse) HasResponse() bool {
+ if x == nil {
+ return false
+ }
+ return x.Response != nil
+}
+
+func (x *AuthenticateResponse) HasWebauthn() bool {
+ if x == nil {
+ return false
+ }
+ _, ok := x.Response.(*AuthenticateResponse_Webauthn)
+ return ok
+}
+
+func (x *AuthenticateResponse) HasSso() bool {
+ if x == nil {
+ return false
+ }
+ _, ok := x.Response.(*AuthenticateResponse_Sso)
+ return ok
+}
+
+func (x *AuthenticateResponse) HasBrowser() bool {
+ if x == nil {
+ return false
+ }
+ _, ok := x.Response.(*AuthenticateResponse_Browser)
+ return ok
+}
+
+func (x *AuthenticateResponse) ClearResponse() {
+ x.Response = nil
+}
+
+func (x *AuthenticateResponse) ClearWebauthn() {
+ if _, ok := x.Response.(*AuthenticateResponse_Webauthn); ok {
+ x.Response = nil
+ }
+}
+
+func (x *AuthenticateResponse) ClearSso() {
+ if _, ok := x.Response.(*AuthenticateResponse_Sso); ok {
+ x.Response = nil
+ }
+}
+
+func (x *AuthenticateResponse) ClearBrowser() {
+ if _, ok := x.Response.(*AuthenticateResponse_Browser); ok {
+ x.Response = nil
+ }
+}
+
+const AuthenticateResponse_Response_not_set_case case_AuthenticateResponse_Response = 0
+const AuthenticateResponse_Webauthn_case case_AuthenticateResponse_Response = 2
+const AuthenticateResponse_Sso_case case_AuthenticateResponse_Response = 3
+const AuthenticateResponse_Browser_case case_AuthenticateResponse_Response = 4
+
+func (x *AuthenticateResponse) WhichResponse() case_AuthenticateResponse_Response {
+ if x == nil {
+ return AuthenticateResponse_Response_not_set_case
+ }
+ switch x.Response.(type) {
+ case *AuthenticateResponse_Webauthn:
+ return AuthenticateResponse_Webauthn_case
+ case *AuthenticateResponse_Sso:
+ return AuthenticateResponse_Sso_case
+ case *AuthenticateResponse_Browser:
+ return AuthenticateResponse_Browser_case
+ default:
+ return AuthenticateResponse_Response_not_set_case
+ }
+}
+
+type AuthenticateResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Unique resource name for the issued challenge generated by the server. Should be treated as an opaque identifier
+ // and used as-is in subsequent API calls.
+ Name string
+ // Response to the challenge using one of the MFA devices.
+
+ // Fields of oneof Response:
+ // Response to a Webauthn challenge.
+ Webauthn *v2.CredentialAssertionResponse
+ // Response to an SSO challenge.
+ Sso *SSOChallengeResponse
+ // Response to a browser challenge.
+ Browser *BrowserMFAResponse
+ // -- end of Response
+}
+
+func (b0 AuthenticateResponse_builder) Build() *AuthenticateResponse {
+ m0 := &AuthenticateResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Name = b.Name
+ if b.Webauthn != nil {
+ x.Response = &AuthenticateResponse_Webauthn{b.Webauthn}
+ }
+ if b.Sso != nil {
+ x.Response = &AuthenticateResponse_Sso{b.Sso}
+ }
+ if b.Browser != nil {
+ x.Response = &AuthenticateResponse_Browser{b.Browser}
+ }
+ return m0
+}
+
+type case_AuthenticateResponse_Response protoreflect.FieldNumber
+
+func (x case_AuthenticateResponse_Response) String() string {
+ md := file_teleport_mfa_v2_challenge_proto_msgTypes[1].Descriptor()
+ if x == 0 {
+ return "not set"
+ }
+ return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isAuthenticateResponse_Response interface {
+ isAuthenticateResponse_Response()
+}
+
+type AuthenticateResponse_Webauthn struct {
+ // Response to a Webauthn challenge.
+ Webauthn *v2.CredentialAssertionResponse `protobuf:"bytes,2,opt,name=webauthn,proto3,oneof"`
+}
+
+type AuthenticateResponse_Sso struct {
+ // Response to an SSO challenge.
+ Sso *SSOChallengeResponse `protobuf:"bytes,3,opt,name=sso,proto3,oneof"`
+}
+
+type AuthenticateResponse_Browser struct {
+ // Response to a browser challenge.
+ Browser *BrowserMFAResponse `protobuf:"bytes,4,opt,name=browser,proto3,oneof"`
+}
+
+func (*AuthenticateResponse_Webauthn) isAuthenticateResponse_Response() {}
+
+func (*AuthenticateResponse_Sso) isAuthenticateResponse_Response() {}
+
+func (*AuthenticateResponse_Browser) isAuthenticateResponse_Response() {}
+
+// SSOChallenge contains SSO auth request details to perform an SSO MFA check.
+type SSOChallenge struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // ID of an SSO auth request.
+ RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+ // IdP redirect URL to initiate the SSO MFA flow.
+ RedirectUrl string `protobuf:"bytes,2,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"`
+ // SSO device corresponding to the challenge.
+ Device *SSOMFADevice `protobuf:"bytes,3,opt,name=device,proto3" json:"device,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SSOChallenge) Reset() {
+ *x = SSOChallenge{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SSOChallenge) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SSOChallenge) ProtoMessage() {}
+
+func (x *SSOChallenge) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *SSOChallenge) GetRequestId() string {
+ if x != nil {
+ return x.RequestId
+ }
+ return ""
+}
+
+func (x *SSOChallenge) GetRedirectUrl() string {
+ if x != nil {
+ return x.RedirectUrl
+ }
+ return ""
+}
+
+func (x *SSOChallenge) GetDevice() *SSOMFADevice {
+ if x != nil {
+ return x.Device
+ }
+ return nil
+}
+
+func (x *SSOChallenge) SetRequestId(v string) {
+ x.RequestId = v
+}
+
+func (x *SSOChallenge) SetRedirectUrl(v string) {
+ x.RedirectUrl = v
+}
+
+func (x *SSOChallenge) SetDevice(v *SSOMFADevice) {
+ x.Device = v
+}
+
+func (x *SSOChallenge) HasDevice() bool {
+ if x == nil {
+ return false
+ }
+ return x.Device != nil
+}
+
+func (x *SSOChallenge) ClearDevice() {
+ x.Device = nil
+}
+
+type SSOChallenge_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // ID of an SSO auth request.
+ RequestId string
+ // IdP redirect URL to initiate the SSO MFA flow.
+ RedirectUrl string
+ // SSO device corresponding to the challenge.
+ Device *SSOMFADevice
+}
+
+func (b0 SSOChallenge_builder) Build() *SSOChallenge {
+ m0 := &SSOChallenge{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.RequestId = b.RequestId
+ x.RedirectUrl = b.RedirectUrl
+ x.Device = b.Device
+ return m0
+}
+
+// SSOMFADevice contains details of an SSO MFA method.
+type SSOMFADevice struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // connector_id is the ID of the SSO connector.
+ ConnectorId string `protobuf:"bytes,1,opt,name=connector_id,json=connectorId,proto3" json:"connector_id,omitempty"`
+ // connector_type is the type of the SSO connector.
+ ConnectorType string `protobuf:"bytes,2,opt,name=connector_type,json=connectorType,proto3" json:"connector_type,omitempty"`
+ // display_name is the display name of the SSO connector
+ DisplayName string `protobuf:"bytes,3,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SSOMFADevice) Reset() {
+ *x = SSOMFADevice{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SSOMFADevice) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SSOMFADevice) ProtoMessage() {}
+
+func (x *SSOMFADevice) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *SSOMFADevice) GetConnectorId() string {
+ if x != nil {
+ return x.ConnectorId
+ }
+ return ""
+}
+
+func (x *SSOMFADevice) GetConnectorType() string {
+ if x != nil {
+ return x.ConnectorType
+ }
+ return ""
+}
+
+func (x *SSOMFADevice) GetDisplayName() string {
+ if x != nil {
+ return x.DisplayName
+ }
+ return ""
+}
+
+func (x *SSOMFADevice) SetConnectorId(v string) {
+ x.ConnectorId = v
+}
+
+func (x *SSOMFADevice) SetConnectorType(v string) {
+ x.ConnectorType = v
+}
+
+func (x *SSOMFADevice) SetDisplayName(v string) {
+ x.DisplayName = v
+}
+
+type SSOMFADevice_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // connector_id is the ID of the SSO connector.
+ ConnectorId string
+ // connector_type is the type of the SSO connector.
+ ConnectorType string
+ // display_name is the display name of the SSO connector
+ DisplayName string
+}
+
+func (b0 SSOMFADevice_builder) Build() *SSOMFADevice {
+ m0 := &SSOMFADevice{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.ConnectorId = b.ConnectorId
+ x.ConnectorType = b.ConnectorType
+ x.DisplayName = b.DisplayName
+ return m0
+}
+
+// SSOChallengeResponse is a response to an SSOChallenge.
+type SSOChallengeResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // ID of an SSO auth request.
+ RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+ // Secret token used to verify the user's SSO MFA session.
+ Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SSOChallengeResponse) Reset() {
+ *x = SSOChallengeResponse{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SSOChallengeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SSOChallengeResponse) ProtoMessage() {}
+
+func (x *SSOChallengeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *SSOChallengeResponse) GetRequestId() string {
+ if x != nil {
+ return x.RequestId
+ }
+ return ""
+}
+
+func (x *SSOChallengeResponse) GetToken() string {
+ if x != nil {
+ return x.Token
+ }
+ return ""
+}
+
+func (x *SSOChallengeResponse) SetRequestId(v string) {
+ x.RequestId = v
+}
+
+func (x *SSOChallengeResponse) SetToken(v string) {
+ x.Token = v
+}
+
+type SSOChallengeResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // ID of an SSO auth request.
+ RequestId string
+ // Secret token used to verify the user's SSO MFA session.
+ Token string
+}
+
+func (b0 SSOChallengeResponse_builder) Build() *SSOChallengeResponse {
+ m0 := &SSOChallengeResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.RequestId = b.RequestId
+ x.Token = b.Token
+ return m0
+}
+
+// BrowserMFAChallenge contains browser MFA request details to perform a browser MFA check.
+type BrowserMFAChallenge struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // RequestId is the ID of a browser MFA request.
+ RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *BrowserMFAChallenge) Reset() {
+ *x = BrowserMFAChallenge{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *BrowserMFAChallenge) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BrowserMFAChallenge) ProtoMessage() {}
+
+func (x *BrowserMFAChallenge) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *BrowserMFAChallenge) GetRequestId() string {
+ if x != nil {
+ return x.RequestId
+ }
+ return ""
+}
+
+func (x *BrowserMFAChallenge) SetRequestId(v string) {
+ x.RequestId = v
+}
+
+type BrowserMFAChallenge_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // RequestId is the ID of a browser MFA request.
+ RequestId string
+}
+
+func (b0 BrowserMFAChallenge_builder) Build() *BrowserMFAChallenge {
+ m0 := &BrowserMFAChallenge{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.RequestId = b.RequestId
+ return m0
+}
+
+// BrowserMFAResponse is a response to BrowserMFAChallenge.
+type BrowserMFAResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // RequestId is the ID of a browser MFA request.
+ RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
+ // WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow.
+ WebauthnResponse *v2.CredentialAssertionResponse `protobuf:"bytes,2,opt,name=webauthn_response,json=webauthnResponse,proto3" json:"webauthn_response,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *BrowserMFAResponse) Reset() {
+ *x = BrowserMFAResponse{}
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *BrowserMFAResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*BrowserMFAResponse) ProtoMessage() {}
+
+func (x *BrowserMFAResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_challenge_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *BrowserMFAResponse) GetRequestId() string {
+ if x != nil {
+ return x.RequestId
+ }
+ return ""
+}
+
+func (x *BrowserMFAResponse) GetWebauthnResponse() *v2.CredentialAssertionResponse {
+ if x != nil {
+ return x.WebauthnResponse
+ }
+ return nil
+}
+
+func (x *BrowserMFAResponse) SetRequestId(v string) {
+ x.RequestId = v
+}
+
+func (x *BrowserMFAResponse) SetWebauthnResponse(v *v2.CredentialAssertionResponse) {
+ x.WebauthnResponse = v
+}
+
+func (x *BrowserMFAResponse) HasWebauthnResponse() bool {
+ if x == nil {
+ return false
+ }
+ return x.WebauthnResponse != nil
+}
+
+func (x *BrowserMFAResponse) ClearWebauthnResponse() {
+ x.WebauthnResponse = nil
+}
+
+type BrowserMFAResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // RequestId is the ID of a browser MFA request.
+ RequestId string
+ // WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow.
+ WebauthnResponse *v2.CredentialAssertionResponse
+}
+
+func (b0 BrowserMFAResponse_builder) Build() *BrowserMFAResponse {
+ m0 := &BrowserMFAResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.RequestId = b.RequestId
+ x.WebauthnResponse = b.WebauthnResponse
+ return m0
+}
+
+var File_teleport_mfa_v2_challenge_proto protoreflect.FileDescriptor
+
+const file_teleport_mfa_v2_challenge_proto_rawDesc = "" +
+ "\n" +
+ "\x1fteleport/mfa/v2/challenge.proto\x12\x0fteleport.mfa.v2\x1a#teleport/webauthn/v2/webauthn.proto\"\x9c\x02\n" +
+ "\x15AuthenticateChallenge\x12\x12\n" +
+ "\x04name\x18\x01 \x01(\tR\x04name\x12X\n" +
+ "\x12webauthn_challenge\x18\x02 \x01(\v2).teleport.webauthn.v2.CredentialAssertionR\x11webauthnChallenge\x12B\n" +
+ "\rsso_challenge\x18\x03 \x01(\v2\x1d.teleport.mfa.v2.SSOChallengeR\fssoChallenge\x12Q\n" +
+ "\x11browser_challenge\x18\x04 \x01(\v2$.teleport.mfa.v2.BrowserMFAChallengeR\x10browserChallenge\"\x83\x02\n" +
+ "\x14AuthenticateResponse\x12\x12\n" +
+ "\x04name\x18\x01 \x01(\tR\x04name\x12O\n" +
+ "\bwebauthn\x18\x02 \x01(\v21.teleport.webauthn.v2.CredentialAssertionResponseH\x00R\bwebauthn\x129\n" +
+ "\x03sso\x18\x03 \x01(\v2%.teleport.mfa.v2.SSOChallengeResponseH\x00R\x03sso\x12?\n" +
+ "\abrowser\x18\x04 \x01(\v2#.teleport.mfa.v2.BrowserMFAResponseH\x00R\abrowserB\n" +
+ "\n" +
+ "\bresponse\"\x87\x01\n" +
+ "\fSSOChallenge\x12\x1d\n" +
+ "\n" +
+ "request_id\x18\x01 \x01(\tR\trequestId\x12!\n" +
+ "\fredirect_url\x18\x02 \x01(\tR\vredirectUrl\x125\n" +
+ "\x06device\x18\x03 \x01(\v2\x1d.teleport.mfa.v2.SSOMFADeviceR\x06device\"{\n" +
+ "\fSSOMFADevice\x12!\n" +
+ "\fconnector_id\x18\x01 \x01(\tR\vconnectorId\x12%\n" +
+ "\x0econnector_type\x18\x02 \x01(\tR\rconnectorType\x12!\n" +
+ "\fdisplay_name\x18\x03 \x01(\tR\vdisplayName\"K\n" +
+ "\x14SSOChallengeResponse\x12\x1d\n" +
+ "\n" +
+ "request_id\x18\x01 \x01(\tR\trequestId\x12\x14\n" +
+ "\x05token\x18\x02 \x01(\tR\x05token\"4\n" +
+ "\x13BrowserMFAChallenge\x12\x1d\n" +
+ "\n" +
+ "request_id\x18\x01 \x01(\tR\trequestId\"\x93\x01\n" +
+ "\x12BrowserMFAResponse\x12\x1d\n" +
+ "\n" +
+ "request_id\x18\x01 \x01(\tR\trequestId\x12^\n" +
+ "\x11webauthn_response\x18\x02 \x01(\v21.teleport.webauthn.v2.CredentialAssertionResponseR\x10webauthnResponseBJZHgithub.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v2;mfav2b\x06proto3"
+
+var file_teleport_mfa_v2_challenge_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
+var file_teleport_mfa_v2_challenge_proto_goTypes = []any{
+ (*AuthenticateChallenge)(nil), // 0: teleport.mfa.v2.AuthenticateChallenge
+ (*AuthenticateResponse)(nil), // 1: teleport.mfa.v2.AuthenticateResponse
+ (*SSOChallenge)(nil), // 2: teleport.mfa.v2.SSOChallenge
+ (*SSOMFADevice)(nil), // 3: teleport.mfa.v2.SSOMFADevice
+ (*SSOChallengeResponse)(nil), // 4: teleport.mfa.v2.SSOChallengeResponse
+ (*BrowserMFAChallenge)(nil), // 5: teleport.mfa.v2.BrowserMFAChallenge
+ (*BrowserMFAResponse)(nil), // 6: teleport.mfa.v2.BrowserMFAResponse
+ (*v2.CredentialAssertion)(nil), // 7: teleport.webauthn.v2.CredentialAssertion
+ (*v2.CredentialAssertionResponse)(nil), // 8: teleport.webauthn.v2.CredentialAssertionResponse
+}
+var file_teleport_mfa_v2_challenge_proto_depIdxs = []int32{
+ 7, // 0: teleport.mfa.v2.AuthenticateChallenge.webauthn_challenge:type_name -> teleport.webauthn.v2.CredentialAssertion
+ 2, // 1: teleport.mfa.v2.AuthenticateChallenge.sso_challenge:type_name -> teleport.mfa.v2.SSOChallenge
+ 5, // 2: teleport.mfa.v2.AuthenticateChallenge.browser_challenge:type_name -> teleport.mfa.v2.BrowserMFAChallenge
+ 8, // 3: teleport.mfa.v2.AuthenticateResponse.webauthn:type_name -> teleport.webauthn.v2.CredentialAssertionResponse
+ 4, // 4: teleport.mfa.v2.AuthenticateResponse.sso:type_name -> teleport.mfa.v2.SSOChallengeResponse
+ 6, // 5: teleport.mfa.v2.AuthenticateResponse.browser:type_name -> teleport.mfa.v2.BrowserMFAResponse
+ 3, // 6: teleport.mfa.v2.SSOChallenge.device:type_name -> teleport.mfa.v2.SSOMFADevice
+ 8, // 7: teleport.mfa.v2.BrowserMFAResponse.webauthn_response:type_name -> teleport.webauthn.v2.CredentialAssertionResponse
+ 8, // [8:8] is the sub-list for method output_type
+ 8, // [8:8] is the sub-list for method input_type
+ 8, // [8:8] is the sub-list for extension type_name
+ 8, // [8:8] is the sub-list for extension extendee
+ 0, // [0:8] is the sub-list for field type_name
+}
+
+func init() { file_teleport_mfa_v2_challenge_proto_init() }
+func file_teleport_mfa_v2_challenge_proto_init() {
+ if File_teleport_mfa_v2_challenge_proto != nil {
+ return
+ }
+ file_teleport_mfa_v2_challenge_proto_msgTypes[1].OneofWrappers = []any{
+ (*AuthenticateResponse_Webauthn)(nil),
+ (*AuthenticateResponse_Sso)(nil),
+ (*AuthenticateResponse_Browser)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_mfa_v2_challenge_proto_rawDesc), len(file_teleport_mfa_v2_challenge_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 7,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_teleport_mfa_v2_challenge_proto_goTypes,
+ DependencyIndexes: file_teleport_mfa_v2_challenge_proto_depIdxs,
+ MessageInfos: file_teleport_mfa_v2_challenge_proto_msgTypes,
+ }.Build()
+ File_teleport_mfa_v2_challenge_proto = out.File
+ file_teleport_mfa_v2_challenge_proto_goTypes = nil
+ file_teleport_mfa_v2_challenge_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/mfa/v2/challenge.pb.go b/api/gen/proto/go/teleport/mfa/v2/challenge_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/mfa/v2/challenge.pb.go
rename to api/gen/proto/go/teleport/mfa/v2/challenge_protoopaque.pb.go
index 62095e3a0d0..cd67396d52a 100644
--- a/api/gen/proto/go/teleport/mfa/v2/challenge.pb.go
+++ b/api/gen/proto/go/teleport/mfa/v2/challenge_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/mfa/v2/challenge.proto
+//go:build !teleport_protohybrid
+
package mfav2
import (
diff --git a/api/gen/proto/go/teleport/mfa/v2/service_protohybrid.pb.go b/api/gen/proto/go/teleport/mfa/v2/service_protohybrid.pb.go
new file mode 100644
index 00000000000..a58951505a4
--- /dev/null
+++ b/api/gen/proto/go/teleport/mfa/v2/service_protohybrid.pb.go
@@ -0,0 +1,1281 @@
+// Copyright 2026 Gravitational, Inc
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/mfa/v2/service.proto
+
+//go:build teleport_protohybrid
+
+package mfav2
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// CreateSessionChallengeRequest is the request message for CreateSessionChallenge.
+type CreateSessionChallengeRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Value that uniquely identifies the user's session. When VerifyValidatedMFAChallenge is called, the server will
+ // verify it matches the payload supplied to CreateSessionChallengeRequest.
+ Payload *SessionIdentifyingPayload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
+ // Name of the target cluster where the SSH session is being established. If unset, the server assumes the challenge
+ // is for the local cluster. Used to determine where the validated challenge should be replicated for leaf clusters.
+ // Required when the SSH session is being established in a leaf cluster.
+ TargetCluster string `protobuf:"bytes,2,opt,name=target_cluster,json=targetCluster,proto3" json:"target_cluster,omitempty"`
+ // Used to construct the IdP redirect URL in SSO MFA challenges. If the client does not support SSO MFA, this field
+ // may be left unset and no SSO challenge will be included in the response. If set, the server will include SSO
+ // challenges in the response.
+ SsoClientRedirectUrl string `protobuf:"bytes,3,opt,name=sso_client_redirect_url,json=ssoClientRedirectUrl,proto3" json:"sso_client_redirect_url,omitempty"`
+ // Proxy address the user is using to connect to the Proxy. Required for SSO MFA to determine which URL to redirect
+ // the user to when there are multiple options.
+ ProxyAddressForSso string `protobuf:"bytes,4,opt,name=proxy_address_for_sso,json=proxyAddressForSso,proto3" json:"proxy_address_for_sso,omitempty"`
+ // Used to construct the redirect URL for browser-based MFA flows. If the client supports browser MFA, this field
+ // should be set to the URL where the browser should redirect to tsh after completing the MFA challenge.
+ // Format: http://127.0.0.1:[random_port]/callback?response={encrypted_webauthn_response}
+ BrowserMfaTshRedirectUrl string `protobuf:"bytes,5,opt,name=browser_mfa_tsh_redirect_url,json=browserMfaTshRedirectUrl,proto3" json:"browser_mfa_tsh_redirect_url,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreateSessionChallengeRequest) Reset() {
+ *x = CreateSessionChallengeRequest{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreateSessionChallengeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSessionChallengeRequest) ProtoMessage() {}
+
+func (x *CreateSessionChallengeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CreateSessionChallengeRequest) GetPayload() *SessionIdentifyingPayload {
+ if x != nil {
+ return x.Payload
+ }
+ return nil
+}
+
+func (x *CreateSessionChallengeRequest) GetTargetCluster() string {
+ if x != nil {
+ return x.TargetCluster
+ }
+ return ""
+}
+
+func (x *CreateSessionChallengeRequest) GetSsoClientRedirectUrl() string {
+ if x != nil {
+ return x.SsoClientRedirectUrl
+ }
+ return ""
+}
+
+func (x *CreateSessionChallengeRequest) GetProxyAddressForSso() string {
+ if x != nil {
+ return x.ProxyAddressForSso
+ }
+ return ""
+}
+
+func (x *CreateSessionChallengeRequest) GetBrowserMfaTshRedirectUrl() string {
+ if x != nil {
+ return x.BrowserMfaTshRedirectUrl
+ }
+ return ""
+}
+
+func (x *CreateSessionChallengeRequest) SetPayload(v *SessionIdentifyingPayload) {
+ x.Payload = v
+}
+
+func (x *CreateSessionChallengeRequest) SetTargetCluster(v string) {
+ x.TargetCluster = v
+}
+
+func (x *CreateSessionChallengeRequest) SetSsoClientRedirectUrl(v string) {
+ x.SsoClientRedirectUrl = v
+}
+
+func (x *CreateSessionChallengeRequest) SetProxyAddressForSso(v string) {
+ x.ProxyAddressForSso = v
+}
+
+func (x *CreateSessionChallengeRequest) SetBrowserMfaTshRedirectUrl(v string) {
+ x.BrowserMfaTshRedirectUrl = v
+}
+
+func (x *CreateSessionChallengeRequest) HasPayload() bool {
+ if x == nil {
+ return false
+ }
+ return x.Payload != nil
+}
+
+func (x *CreateSessionChallengeRequest) ClearPayload() {
+ x.Payload = nil
+}
+
+type CreateSessionChallengeRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Value that uniquely identifies the user's session. When VerifyValidatedMFAChallenge is called, the server will
+ // verify it matches the payload supplied to CreateSessionChallengeRequest.
+ Payload *SessionIdentifyingPayload
+ // Name of the target cluster where the SSH session is being established. If unset, the server assumes the challenge
+ // is for the local cluster. Used to determine where the validated challenge should be replicated for leaf clusters.
+ // Required when the SSH session is being established in a leaf cluster.
+ TargetCluster string
+ // Used to construct the IdP redirect URL in SSO MFA challenges. If the client does not support SSO MFA, this field
+ // may be left unset and no SSO challenge will be included in the response. If set, the server will include SSO
+ // challenges in the response.
+ SsoClientRedirectUrl string
+ // Proxy address the user is using to connect to the Proxy. Required for SSO MFA to determine which URL to redirect
+ // the user to when there are multiple options.
+ ProxyAddressForSso string
+ // Used to construct the redirect URL for browser-based MFA flows. If the client supports browser MFA, this field
+ // should be set to the URL where the browser should redirect to tsh after completing the MFA challenge.
+ // Format: http://127.0.0.1:[random_port]/callback?response={encrypted_webauthn_response}
+ BrowserMfaTshRedirectUrl string
+}
+
+func (b0 CreateSessionChallengeRequest_builder) Build() *CreateSessionChallengeRequest {
+ m0 := &CreateSessionChallengeRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Payload = b.Payload
+ x.TargetCluster = b.TargetCluster
+ x.SsoClientRedirectUrl = b.SsoClientRedirectUrl
+ x.ProxyAddressForSso = b.ProxyAddressForSso
+ x.BrowserMfaTshRedirectUrl = b.BrowserMfaTshRedirectUrl
+ return m0
+}
+
+// CreateSessionChallengeResponse is the response message for CreateSessionChallenge.
+type CreateSessionChallengeResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // MFA challenge that the user must respond to.
+ MfaChallenge *AuthenticateChallenge `protobuf:"bytes,1,opt,name=mfa_challenge,json=mfaChallenge,proto3" json:"mfa_challenge,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreateSessionChallengeResponse) Reset() {
+ *x = CreateSessionChallengeResponse{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreateSessionChallengeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateSessionChallengeResponse) ProtoMessage() {}
+
+func (x *CreateSessionChallengeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CreateSessionChallengeResponse) GetMfaChallenge() *AuthenticateChallenge {
+ if x != nil {
+ return x.MfaChallenge
+ }
+ return nil
+}
+
+func (x *CreateSessionChallengeResponse) SetMfaChallenge(v *AuthenticateChallenge) {
+ x.MfaChallenge = v
+}
+
+func (x *CreateSessionChallengeResponse) HasMfaChallenge() bool {
+ if x == nil {
+ return false
+ }
+ return x.MfaChallenge != nil
+}
+
+func (x *CreateSessionChallengeResponse) ClearMfaChallenge() {
+ x.MfaChallenge = nil
+}
+
+type CreateSessionChallengeResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // MFA challenge that the user must respond to.
+ MfaChallenge *AuthenticateChallenge
+}
+
+func (b0 CreateSessionChallengeResponse_builder) Build() *CreateSessionChallengeResponse {
+ m0 := &CreateSessionChallengeResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.MfaChallenge = b.MfaChallenge
+ return m0
+}
+
+// ValidateSessionChallengeRequest is the request message for ValidateSessionChallenge.
+type ValidateSessionChallengeRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // MFA challenge response provided by the user.
+ MfaResponse *AuthenticateResponse `protobuf:"bytes,1,opt,name=mfa_response,json=mfaResponse,proto3" json:"mfa_response,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ValidateSessionChallengeRequest) Reset() {
+ *x = ValidateSessionChallengeRequest{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ValidateSessionChallengeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValidateSessionChallengeRequest) ProtoMessage() {}
+
+func (x *ValidateSessionChallengeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ValidateSessionChallengeRequest) GetMfaResponse() *AuthenticateResponse {
+ if x != nil {
+ return x.MfaResponse
+ }
+ return nil
+}
+
+func (x *ValidateSessionChallengeRequest) SetMfaResponse(v *AuthenticateResponse) {
+ x.MfaResponse = v
+}
+
+func (x *ValidateSessionChallengeRequest) HasMfaResponse() bool {
+ if x == nil {
+ return false
+ }
+ return x.MfaResponse != nil
+}
+
+func (x *ValidateSessionChallengeRequest) ClearMfaResponse() {
+ x.MfaResponse = nil
+}
+
+type ValidateSessionChallengeRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // MFA challenge response provided by the user.
+ MfaResponse *AuthenticateResponse
+}
+
+func (b0 ValidateSessionChallengeRequest_builder) Build() *ValidateSessionChallengeRequest {
+ m0 := &ValidateSessionChallengeRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.MfaResponse = b.MfaResponse
+ return m0
+}
+
+// ValidateSessionChallengeResponse is the response message for ValidateSessionChallenge.
+type ValidateSessionChallengeResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ValidateSessionChallengeResponse) Reset() {
+ *x = ValidateSessionChallengeResponse{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ValidateSessionChallengeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValidateSessionChallengeResponse) ProtoMessage() {}
+
+func (x *ValidateSessionChallengeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+type ValidateSessionChallengeResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 ValidateSessionChallengeResponse_builder) Build() *ValidateSessionChallengeResponse {
+ m0 := &ValidateSessionChallengeResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ return m0
+}
+
+// ListValidatedMFAChallengesFilter is used to filter validated MFA challenges in ListValidatedMFAChallengesRequest.
+type ListValidatedMFAChallengesFilter struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // If set, only return validated MFA challenges for the specified target cluster.
+ TargetCluster *string `protobuf:"bytes,1,opt,name=target_cluster,json=targetCluster,proto3,oneof" json:"target_cluster,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ListValidatedMFAChallengesFilter) Reset() {
+ *x = ListValidatedMFAChallengesFilter{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ListValidatedMFAChallengesFilter) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListValidatedMFAChallengesFilter) ProtoMessage() {}
+
+func (x *ListValidatedMFAChallengesFilter) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ListValidatedMFAChallengesFilter) GetTargetCluster() string {
+ if x != nil && x.TargetCluster != nil {
+ return *x.TargetCluster
+ }
+ return ""
+}
+
+func (x *ListValidatedMFAChallengesFilter) SetTargetCluster(v string) {
+ x.TargetCluster = &v
+}
+
+func (x *ListValidatedMFAChallengesFilter) HasTargetCluster() bool {
+ if x == nil {
+ return false
+ }
+ return x.TargetCluster != nil
+}
+
+func (x *ListValidatedMFAChallengesFilter) ClearTargetCluster() {
+ x.TargetCluster = nil
+}
+
+type ListValidatedMFAChallengesFilter_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // If set, only return validated MFA challenges for the specified target cluster.
+ TargetCluster *string
+}
+
+func (b0 ListValidatedMFAChallengesFilter_builder) Build() *ListValidatedMFAChallengesFilter {
+ m0 := &ListValidatedMFAChallengesFilter{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.TargetCluster = b.TargetCluster
+ return m0
+}
+
+// ListValidatedMFAChallengesRequest is the request message for ListValidatedMFAChallenges.
+type ListValidatedMFAChallengesRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // The maximum number of items to return. The server may impose a different page size at its discretion.
+ PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
+ // The next_page_token value returned from a previous List request, if any.
+ PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
+ // Collection of fields to filter challenges by. Challenges must match all filter fields to be included in the
+ // results. If unset, no filtering is performed and all validated MFA challenges are returned (up to the page size
+ // limit).
+ Filter *ListValidatedMFAChallengesFilter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ListValidatedMFAChallengesRequest) Reset() {
+ *x = ListValidatedMFAChallengesRequest{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ListValidatedMFAChallengesRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListValidatedMFAChallengesRequest) ProtoMessage() {}
+
+func (x *ListValidatedMFAChallengesRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ListValidatedMFAChallengesRequest) GetPageSize() int32 {
+ if x != nil {
+ return x.PageSize
+ }
+ return 0
+}
+
+func (x *ListValidatedMFAChallengesRequest) GetPageToken() string {
+ if x != nil {
+ return x.PageToken
+ }
+ return ""
+}
+
+func (x *ListValidatedMFAChallengesRequest) GetFilter() *ListValidatedMFAChallengesFilter {
+ if x != nil {
+ return x.Filter
+ }
+ return nil
+}
+
+func (x *ListValidatedMFAChallengesRequest) SetPageSize(v int32) {
+ x.PageSize = v
+}
+
+func (x *ListValidatedMFAChallengesRequest) SetPageToken(v string) {
+ x.PageToken = v
+}
+
+func (x *ListValidatedMFAChallengesRequest) SetFilter(v *ListValidatedMFAChallengesFilter) {
+ x.Filter = v
+}
+
+func (x *ListValidatedMFAChallengesRequest) HasFilter() bool {
+ if x == nil {
+ return false
+ }
+ return x.Filter != nil
+}
+
+func (x *ListValidatedMFAChallengesRequest) ClearFilter() {
+ x.Filter = nil
+}
+
+type ListValidatedMFAChallengesRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // The maximum number of items to return. The server may impose a different page size at its discretion.
+ PageSize int32
+ // The next_page_token value returned from a previous List request, if any.
+ PageToken string
+ // Collection of fields to filter challenges by. Challenges must match all filter fields to be included in the
+ // results. If unset, no filtering is performed and all validated MFA challenges are returned (up to the page size
+ // limit).
+ Filter *ListValidatedMFAChallengesFilter
+}
+
+func (b0 ListValidatedMFAChallengesRequest_builder) Build() *ListValidatedMFAChallengesRequest {
+ m0 := &ListValidatedMFAChallengesRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.PageSize = b.PageSize
+ x.PageToken = b.PageToken
+ x.Filter = b.Filter
+ return m0
+}
+
+// ListValidatedMFAChallengesResponse is the response message for ListValidatedMFAChallenges.
+type ListValidatedMFAChallengesResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // List of validated MFA challenges that have been created for user sessions.
+ ValidatedChallenges []*ValidatedMFAChallenge `protobuf:"bytes,1,rep,name=validated_challenges,json=validatedChallenges,proto3" json:"validated_challenges,omitempty"`
+ // Token to retrieve the next page of results, or empty if there are no more results exist.
+ NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ListValidatedMFAChallengesResponse) Reset() {
+ *x = ListValidatedMFAChallengesResponse{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ListValidatedMFAChallengesResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ListValidatedMFAChallengesResponse) ProtoMessage() {}
+
+func (x *ListValidatedMFAChallengesResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ListValidatedMFAChallengesResponse) GetValidatedChallenges() []*ValidatedMFAChallenge {
+ if x != nil {
+ return x.ValidatedChallenges
+ }
+ return nil
+}
+
+func (x *ListValidatedMFAChallengesResponse) GetNextPageToken() string {
+ if x != nil {
+ return x.NextPageToken
+ }
+ return ""
+}
+
+func (x *ListValidatedMFAChallengesResponse) SetValidatedChallenges(v []*ValidatedMFAChallenge) {
+ x.ValidatedChallenges = v
+}
+
+func (x *ListValidatedMFAChallengesResponse) SetNextPageToken(v string) {
+ x.NextPageToken = v
+}
+
+type ListValidatedMFAChallengesResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // List of validated MFA challenges that have been created for user sessions.
+ ValidatedChallenges []*ValidatedMFAChallenge
+ // Token to retrieve the next page of results, or empty if there are no more results exist.
+ NextPageToken string
+}
+
+func (b0 ListValidatedMFAChallengesResponse_builder) Build() *ListValidatedMFAChallengesResponse {
+ m0 := &ListValidatedMFAChallengesResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.ValidatedChallenges = b.ValidatedChallenges
+ x.NextPageToken = b.NextPageToken
+ return m0
+}
+
+// ReplicateValidatedMFAChallengeRequest is the request message for ReplicateValidatedMFAChallenge.
+type ReplicateValidatedMFAChallengeRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Resource name for the issued challenge. Must match the AuthenticateChallenge.name in order to find the correct
+ // challenge.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Value that uniquely identifies the user's session. Must match the payload in CreateSessionChallengeRequest.
+ Payload *SessionIdentifyingPayload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
+ // Name of the source cluster where the validated challenge originated. Required in order to match the validated
+ // challenge to the correct session.
+ SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"`
+ // Name of the target cluster where the SSH session is being established. Required in order to match the validated
+ // challenge to the correct session.
+ TargetCluster string `protobuf:"bytes,4,opt,name=target_cluster,json=targetCluster,proto3" json:"target_cluster,omitempty"`
+ // Username of the Teleport user for whom the challenge was issued. This should be the Teleport username (not the SSH
+ // login name) and must correspond to a user in the cluster specified by source_cluster.
+ Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) Reset() {
+ *x = ReplicateValidatedMFAChallengeRequest{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReplicateValidatedMFAChallengeRequest) ProtoMessage() {}
+
+func (x *ReplicateValidatedMFAChallengeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) GetPayload() *SessionIdentifyingPayload {
+ if x != nil {
+ return x.Payload
+ }
+ return nil
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) GetSourceCluster() string {
+ if x != nil {
+ return x.SourceCluster
+ }
+ return ""
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) GetTargetCluster() string {
+ if x != nil {
+ return x.TargetCluster
+ }
+ return ""
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) SetName(v string) {
+ x.Name = v
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) SetPayload(v *SessionIdentifyingPayload) {
+ x.Payload = v
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) SetSourceCluster(v string) {
+ x.SourceCluster = v
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) SetTargetCluster(v string) {
+ x.TargetCluster = v
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) SetUsername(v string) {
+ x.Username = v
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) HasPayload() bool {
+ if x == nil {
+ return false
+ }
+ return x.Payload != nil
+}
+
+func (x *ReplicateValidatedMFAChallengeRequest) ClearPayload() {
+ x.Payload = nil
+}
+
+type ReplicateValidatedMFAChallengeRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Resource name for the issued challenge. Must match the AuthenticateChallenge.name in order to find the correct
+ // challenge.
+ Name string
+ // Value that uniquely identifies the user's session. Must match the payload in CreateSessionChallengeRequest.
+ Payload *SessionIdentifyingPayload
+ // Name of the source cluster where the validated challenge originated. Required in order to match the validated
+ // challenge to the correct session.
+ SourceCluster string
+ // Name of the target cluster where the SSH session is being established. Required in order to match the validated
+ // challenge to the correct session.
+ TargetCluster string
+ // Username of the Teleport user for whom the challenge was issued. This should be the Teleport username (not the SSH
+ // login name) and must correspond to a user in the cluster specified by source_cluster.
+ Username string
+}
+
+func (b0 ReplicateValidatedMFAChallengeRequest_builder) Build() *ReplicateValidatedMFAChallengeRequest {
+ m0 := &ReplicateValidatedMFAChallengeRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Name = b.Name
+ x.Payload = b.Payload
+ x.SourceCluster = b.SourceCluster
+ x.TargetCluster = b.TargetCluster
+ x.Username = b.Username
+ return m0
+}
+
+// ReplicateValidatedMFAChallengeResponse is the response message for ReplicateValidatedMFAChallenge.
+type ReplicateValidatedMFAChallengeResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Validated MFA challenge that was replicated.
+ ReplicatedChallenge *ValidatedMFAChallenge `protobuf:"bytes,1,opt,name=replicated_challenge,json=replicatedChallenge,proto3" json:"replicated_challenge,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ReplicateValidatedMFAChallengeResponse) Reset() {
+ *x = ReplicateValidatedMFAChallengeResponse{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ReplicateValidatedMFAChallengeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ReplicateValidatedMFAChallengeResponse) ProtoMessage() {}
+
+func (x *ReplicateValidatedMFAChallengeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[8]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ReplicateValidatedMFAChallengeResponse) GetReplicatedChallenge() *ValidatedMFAChallenge {
+ if x != nil {
+ return x.ReplicatedChallenge
+ }
+ return nil
+}
+
+func (x *ReplicateValidatedMFAChallengeResponse) SetReplicatedChallenge(v *ValidatedMFAChallenge) {
+ x.ReplicatedChallenge = v
+}
+
+func (x *ReplicateValidatedMFAChallengeResponse) HasReplicatedChallenge() bool {
+ if x == nil {
+ return false
+ }
+ return x.ReplicatedChallenge != nil
+}
+
+func (x *ReplicateValidatedMFAChallengeResponse) ClearReplicatedChallenge() {
+ x.ReplicatedChallenge = nil
+}
+
+type ReplicateValidatedMFAChallengeResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Validated MFA challenge that was replicated.
+ ReplicatedChallenge *ValidatedMFAChallenge
+}
+
+func (b0 ReplicateValidatedMFAChallengeResponse_builder) Build() *ReplicateValidatedMFAChallengeResponse {
+ m0 := &ReplicateValidatedMFAChallengeResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.ReplicatedChallenge = b.ReplicatedChallenge
+ return m0
+}
+
+// VerifyValidatedMFAChallengeRequest is the request message for VerifyValidatedMFAChallenge.
+type VerifyValidatedMFAChallengeRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Resource name for the issued challenge. Must match the AuthenticateChallenge.name in order to find the correct
+ // challenge.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Value that uniquely identifies the user's session. The client MUST independently compute this value from session
+ // state. The server will verify it matches the payload supplied in CreateSessionChallengeRequest to ensure the
+ // challenge is tied to the correct session.
+ Payload *SessionIdentifyingPayload `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
+ // Name of the cluster where the validated challenge originated.
+ SourceCluster string `protobuf:"bytes,3,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"`
+ // Username of the Teleport user for whom the challenge was issued. This should be the Teleport username (not the SSH
+ // login name) and must correspond to a user in the cluster specified by source_cluster. The client MUST determine this
+ // value by authenticating the Teleport user before calling this method. The server will verify that it matches the
+ // Teleport user associated with the validated challenge to ensure the challenge is tied to the correct user.
+ Username string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) Reset() {
+ *x = VerifyValidatedMFAChallengeRequest{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VerifyValidatedMFAChallengeRequest) ProtoMessage() {}
+
+func (x *VerifyValidatedMFAChallengeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[9]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) GetPayload() *SessionIdentifyingPayload {
+ if x != nil {
+ return x.Payload
+ }
+ return nil
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) GetSourceCluster() string {
+ if x != nil {
+ return x.SourceCluster
+ }
+ return ""
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) SetName(v string) {
+ x.Name = v
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) SetPayload(v *SessionIdentifyingPayload) {
+ x.Payload = v
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) SetSourceCluster(v string) {
+ x.SourceCluster = v
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) SetUsername(v string) {
+ x.Username = v
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) HasPayload() bool {
+ if x == nil {
+ return false
+ }
+ return x.Payload != nil
+}
+
+func (x *VerifyValidatedMFAChallengeRequest) ClearPayload() {
+ x.Payload = nil
+}
+
+type VerifyValidatedMFAChallengeRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Resource name for the issued challenge. Must match the AuthenticateChallenge.name in order to find the correct
+ // challenge.
+ Name string
+ // Value that uniquely identifies the user's session. The client MUST independently compute this value from session
+ // state. The server will verify it matches the payload supplied in CreateSessionChallengeRequest to ensure the
+ // challenge is tied to the correct session.
+ Payload *SessionIdentifyingPayload
+ // Name of the cluster where the validated challenge originated.
+ SourceCluster string
+ // Username of the Teleport user for whom the challenge was issued. This should be the Teleport username (not the SSH
+ // login name) and must correspond to a user in the cluster specified by source_cluster. The client MUST determine this
+ // value by authenticating the Teleport user before calling this method. The server will verify that it matches the
+ // Teleport user associated with the validated challenge to ensure the challenge is tied to the correct user.
+ Username string
+}
+
+func (b0 VerifyValidatedMFAChallengeRequest_builder) Build() *VerifyValidatedMFAChallengeRequest {
+ m0 := &VerifyValidatedMFAChallengeRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Name = b.Name
+ x.Payload = b.Payload
+ x.SourceCluster = b.SourceCluster
+ x.Username = b.Username
+ return m0
+}
+
+// VerifyValidatedMFAChallengeResponse is the response message for VerifyValidatedMFAChallenge.
+type VerifyValidatedMFAChallengeResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *VerifyValidatedMFAChallengeResponse) Reset() {
+ *x = VerifyValidatedMFAChallengeResponse{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *VerifyValidatedMFAChallengeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*VerifyValidatedMFAChallengeResponse) ProtoMessage() {}
+
+func (x *VerifyValidatedMFAChallengeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[10]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+type VerifyValidatedMFAChallengeResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+}
+
+func (b0 VerifyValidatedMFAChallengeResponse_builder) Build() *VerifyValidatedMFAChallengeResponse {
+ m0 := &VerifyValidatedMFAChallengeResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ return m0
+}
+
+// CompleteBrowserMFAChallengeRequest is used to complete an MFA response
+// during a browser-based MFA authentication flow.
+type CompleteBrowserMFAChallengeRequest struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ BrowserMfaResponse *BrowserMFAResponse `protobuf:"bytes,1,opt,name=browser_mfa_response,json=browserMfaResponse,proto3" json:"browser_mfa_response,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CompleteBrowserMFAChallengeRequest) Reset() {
+ *x = CompleteBrowserMFAChallengeRequest{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CompleteBrowserMFAChallengeRequest) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CompleteBrowserMFAChallengeRequest) ProtoMessage() {}
+
+func (x *CompleteBrowserMFAChallengeRequest) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[11]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CompleteBrowserMFAChallengeRequest) GetBrowserMfaResponse() *BrowserMFAResponse {
+ if x != nil {
+ return x.BrowserMfaResponse
+ }
+ return nil
+}
+
+func (x *CompleteBrowserMFAChallengeRequest) SetBrowserMfaResponse(v *BrowserMFAResponse) {
+ x.BrowserMfaResponse = v
+}
+
+func (x *CompleteBrowserMFAChallengeRequest) HasBrowserMfaResponse() bool {
+ if x == nil {
+ return false
+ }
+ return x.BrowserMfaResponse != nil
+}
+
+func (x *CompleteBrowserMFAChallengeRequest) ClearBrowserMfaResponse() {
+ x.BrowserMfaResponse = nil
+}
+
+type CompleteBrowserMFAChallengeRequest_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ BrowserMfaResponse *BrowserMFAResponse
+}
+
+func (b0 CompleteBrowserMFAChallengeRequest_builder) Build() *CompleteBrowserMFAChallengeRequest {
+ m0 := &CompleteBrowserMFAChallengeRequest{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.BrowserMfaResponse = b.BrowserMfaResponse
+ return m0
+}
+
+// CompleteBrowserMFAChallengeResponse contains the redirect URL to send
+// the user back to after successfully completing browser-based MFA authentication.
+type CompleteBrowserMFAChallengeResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // tsh_redirect_url is the callback URL to tsh's local HTTP server with the encrypted WebAuthn response.
+ // Format: http://127.0.0.1:[random_port]/callback?response={encrypted_webauthn_response}
+ TshRedirectUrl string `protobuf:"bytes,1,opt,name=tsh_redirect_url,json=tshRedirectUrl,proto3" json:"tsh_redirect_url,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CompleteBrowserMFAChallengeResponse) Reset() {
+ *x = CompleteBrowserMFAChallengeResponse{}
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CompleteBrowserMFAChallengeResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CompleteBrowserMFAChallengeResponse) ProtoMessage() {}
+
+func (x *CompleteBrowserMFAChallengeResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_service_proto_msgTypes[12]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CompleteBrowserMFAChallengeResponse) GetTshRedirectUrl() string {
+ if x != nil {
+ return x.TshRedirectUrl
+ }
+ return ""
+}
+
+func (x *CompleteBrowserMFAChallengeResponse) SetTshRedirectUrl(v string) {
+ x.TshRedirectUrl = v
+}
+
+type CompleteBrowserMFAChallengeResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // tsh_redirect_url is the callback URL to tsh's local HTTP server with the encrypted WebAuthn response.
+ // Format: http://127.0.0.1:[random_port]/callback?response={encrypted_webauthn_response}
+ TshRedirectUrl string
+}
+
+func (b0 CompleteBrowserMFAChallengeResponse_builder) Build() *CompleteBrowserMFAChallengeResponse {
+ m0 := &CompleteBrowserMFAChallengeResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.TshRedirectUrl = b.TshRedirectUrl
+ return m0
+}
+
+var File_teleport_mfa_v2_service_proto protoreflect.FileDescriptor
+
+const file_teleport_mfa_v2_service_proto_rawDesc = "" +
+ "\n" +
+ "\x1dteleport/mfa/v2/service.proto\x12\x0fteleport.mfa.v2\x1a\x1fteleport/mfa/v2/challenge.proto\x1a)teleport/mfa/v2/validated_challenge.proto\"\xb6\x02\n" +
+ "\x1dCreateSessionChallengeRequest\x12D\n" +
+ "\apayload\x18\x01 \x01(\v2*.teleport.mfa.v2.SessionIdentifyingPayloadR\apayload\x12%\n" +
+ "\x0etarget_cluster\x18\x02 \x01(\tR\rtargetCluster\x125\n" +
+ "\x17sso_client_redirect_url\x18\x03 \x01(\tR\x14ssoClientRedirectUrl\x121\n" +
+ "\x15proxy_address_for_sso\x18\x04 \x01(\tR\x12proxyAddressForSso\x12>\n" +
+ "\x1cbrowser_mfa_tsh_redirect_url\x18\x05 \x01(\tR\x18browserMfaTshRedirectUrl\"m\n" +
+ "\x1eCreateSessionChallengeResponse\x12K\n" +
+ "\rmfa_challenge\x18\x01 \x01(\v2&.teleport.mfa.v2.AuthenticateChallengeR\fmfaChallenge\"k\n" +
+ "\x1fValidateSessionChallengeRequest\x12H\n" +
+ "\fmfa_response\x18\x01 \x01(\v2%.teleport.mfa.v2.AuthenticateResponseR\vmfaResponse\"\"\n" +
+ " ValidateSessionChallengeResponse\"a\n" +
+ " ListValidatedMFAChallengesFilter\x12*\n" +
+ "\x0etarget_cluster\x18\x01 \x01(\tH\x00R\rtargetCluster\x88\x01\x01B\x11\n" +
+ "\x0f_target_cluster\"\xaa\x01\n" +
+ "!ListValidatedMFAChallengesRequest\x12\x1b\n" +
+ "\tpage_size\x18\x01 \x01(\x05R\bpageSize\x12\x1d\n" +
+ "\n" +
+ "page_token\x18\x02 \x01(\tR\tpageToken\x12I\n" +
+ "\x06filter\x18\x03 \x01(\v21.teleport.mfa.v2.ListValidatedMFAChallengesFilterR\x06filter\"\xa7\x01\n" +
+ "\"ListValidatedMFAChallengesResponse\x12Y\n" +
+ "\x14validated_challenges\x18\x01 \x03(\v2&.teleport.mfa.v2.ValidatedMFAChallengeR\x13validatedChallenges\x12&\n" +
+ "\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\xeb\x01\n" +
+ "%ReplicateValidatedMFAChallengeRequest\x12\x12\n" +
+ "\x04name\x18\x01 \x01(\tR\x04name\x12D\n" +
+ "\apayload\x18\x02 \x01(\v2*.teleport.mfa.v2.SessionIdentifyingPayloadR\apayload\x12%\n" +
+ "\x0esource_cluster\x18\x03 \x01(\tR\rsourceCluster\x12%\n" +
+ "\x0etarget_cluster\x18\x04 \x01(\tR\rtargetCluster\x12\x1a\n" +
+ "\busername\x18\x05 \x01(\tR\busername\"\x83\x01\n" +
+ "&ReplicateValidatedMFAChallengeResponse\x12Y\n" +
+ "\x14replicated_challenge\x18\x01 \x01(\v2&.teleport.mfa.v2.ValidatedMFAChallengeR\x13replicatedChallenge\"\xc1\x01\n" +
+ "\"VerifyValidatedMFAChallengeRequest\x12\x12\n" +
+ "\x04name\x18\x01 \x01(\tR\x04name\x12D\n" +
+ "\apayload\x18\x02 \x01(\v2*.teleport.mfa.v2.SessionIdentifyingPayloadR\apayload\x12%\n" +
+ "\x0esource_cluster\x18\x03 \x01(\tR\rsourceCluster\x12\x1a\n" +
+ "\busername\x18\x04 \x01(\tR\busername\"%\n" +
+ "#VerifyValidatedMFAChallengeResponse\"{\n" +
+ "\"CompleteBrowserMFAChallengeRequest\x12U\n" +
+ "\x14browser_mfa_response\x18\x01 \x01(\v2#.teleport.mfa.v2.BrowserMFAResponseR\x12browserMfaResponse\"O\n" +
+ "#CompleteBrowserMFAChallengeResponse\x12(\n" +
+ "\x10tsh_redirect_url\x18\x01 \x01(\tR\x0etshRedirectUrl2\xba\x06\n" +
+ "\n" +
+ "MFAService\x12y\n" +
+ "\x16CreateSessionChallenge\x12..teleport.mfa.v2.CreateSessionChallengeRequest\x1a/.teleport.mfa.v2.CreateSessionChallengeResponse\x12\x7f\n" +
+ "\x18ValidateSessionChallenge\x120.teleport.mfa.v2.ValidateSessionChallengeRequest\x1a1.teleport.mfa.v2.ValidateSessionChallengeResponse\x12\x85\x01\n" +
+ "\x1aListValidatedMFAChallenges\x122.teleport.mfa.v2.ListValidatedMFAChallengesRequest\x1a3.teleport.mfa.v2.ListValidatedMFAChallengesResponse\x12\x91\x01\n" +
+ "\x1eReplicateValidatedMFAChallenge\x126.teleport.mfa.v2.ReplicateValidatedMFAChallengeRequest\x1a7.teleport.mfa.v2.ReplicateValidatedMFAChallengeResponse\x12\x88\x01\n" +
+ "\x1bVerifyValidatedMFAChallenge\x123.teleport.mfa.v2.VerifyValidatedMFAChallengeRequest\x1a4.teleport.mfa.v2.VerifyValidatedMFAChallengeResponse\x12\x88\x01\n" +
+ "\x1bCompleteBrowserMFAChallenge\x123.teleport.mfa.v2.CompleteBrowserMFAChallengeRequest\x1a4.teleport.mfa.v2.CompleteBrowserMFAChallengeResponseBJZHgithub.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v2;mfav2b\x06proto3"
+
+var file_teleport_mfa_v2_service_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
+var file_teleport_mfa_v2_service_proto_goTypes = []any{
+ (*CreateSessionChallengeRequest)(nil), // 0: teleport.mfa.v2.CreateSessionChallengeRequest
+ (*CreateSessionChallengeResponse)(nil), // 1: teleport.mfa.v2.CreateSessionChallengeResponse
+ (*ValidateSessionChallengeRequest)(nil), // 2: teleport.mfa.v2.ValidateSessionChallengeRequest
+ (*ValidateSessionChallengeResponse)(nil), // 3: teleport.mfa.v2.ValidateSessionChallengeResponse
+ (*ListValidatedMFAChallengesFilter)(nil), // 4: teleport.mfa.v2.ListValidatedMFAChallengesFilter
+ (*ListValidatedMFAChallengesRequest)(nil), // 5: teleport.mfa.v2.ListValidatedMFAChallengesRequest
+ (*ListValidatedMFAChallengesResponse)(nil), // 6: teleport.mfa.v2.ListValidatedMFAChallengesResponse
+ (*ReplicateValidatedMFAChallengeRequest)(nil), // 7: teleport.mfa.v2.ReplicateValidatedMFAChallengeRequest
+ (*ReplicateValidatedMFAChallengeResponse)(nil), // 8: teleport.mfa.v2.ReplicateValidatedMFAChallengeResponse
+ (*VerifyValidatedMFAChallengeRequest)(nil), // 9: teleport.mfa.v2.VerifyValidatedMFAChallengeRequest
+ (*VerifyValidatedMFAChallengeResponse)(nil), // 10: teleport.mfa.v2.VerifyValidatedMFAChallengeResponse
+ (*CompleteBrowserMFAChallengeRequest)(nil), // 11: teleport.mfa.v2.CompleteBrowserMFAChallengeRequest
+ (*CompleteBrowserMFAChallengeResponse)(nil), // 12: teleport.mfa.v2.CompleteBrowserMFAChallengeResponse
+ (*SessionIdentifyingPayload)(nil), // 13: teleport.mfa.v2.SessionIdentifyingPayload
+ (*AuthenticateChallenge)(nil), // 14: teleport.mfa.v2.AuthenticateChallenge
+ (*AuthenticateResponse)(nil), // 15: teleport.mfa.v2.AuthenticateResponse
+ (*ValidatedMFAChallenge)(nil), // 16: teleport.mfa.v2.ValidatedMFAChallenge
+ (*BrowserMFAResponse)(nil), // 17: teleport.mfa.v2.BrowserMFAResponse
+}
+var file_teleport_mfa_v2_service_proto_depIdxs = []int32{
+ 13, // 0: teleport.mfa.v2.CreateSessionChallengeRequest.payload:type_name -> teleport.mfa.v2.SessionIdentifyingPayload
+ 14, // 1: teleport.mfa.v2.CreateSessionChallengeResponse.mfa_challenge:type_name -> teleport.mfa.v2.AuthenticateChallenge
+ 15, // 2: teleport.mfa.v2.ValidateSessionChallengeRequest.mfa_response:type_name -> teleport.mfa.v2.AuthenticateResponse
+ 4, // 3: teleport.mfa.v2.ListValidatedMFAChallengesRequest.filter:type_name -> teleport.mfa.v2.ListValidatedMFAChallengesFilter
+ 16, // 4: teleport.mfa.v2.ListValidatedMFAChallengesResponse.validated_challenges:type_name -> teleport.mfa.v2.ValidatedMFAChallenge
+ 13, // 5: teleport.mfa.v2.ReplicateValidatedMFAChallengeRequest.payload:type_name -> teleport.mfa.v2.SessionIdentifyingPayload
+ 16, // 6: teleport.mfa.v2.ReplicateValidatedMFAChallengeResponse.replicated_challenge:type_name -> teleport.mfa.v2.ValidatedMFAChallenge
+ 13, // 7: teleport.mfa.v2.VerifyValidatedMFAChallengeRequest.payload:type_name -> teleport.mfa.v2.SessionIdentifyingPayload
+ 17, // 8: teleport.mfa.v2.CompleteBrowserMFAChallengeRequest.browser_mfa_response:type_name -> teleport.mfa.v2.BrowserMFAResponse
+ 0, // 9: teleport.mfa.v2.MFAService.CreateSessionChallenge:input_type -> teleport.mfa.v2.CreateSessionChallengeRequest
+ 2, // 10: teleport.mfa.v2.MFAService.ValidateSessionChallenge:input_type -> teleport.mfa.v2.ValidateSessionChallengeRequest
+ 5, // 11: teleport.mfa.v2.MFAService.ListValidatedMFAChallenges:input_type -> teleport.mfa.v2.ListValidatedMFAChallengesRequest
+ 7, // 12: teleport.mfa.v2.MFAService.ReplicateValidatedMFAChallenge:input_type -> teleport.mfa.v2.ReplicateValidatedMFAChallengeRequest
+ 9, // 13: teleport.mfa.v2.MFAService.VerifyValidatedMFAChallenge:input_type -> teleport.mfa.v2.VerifyValidatedMFAChallengeRequest
+ 11, // 14: teleport.mfa.v2.MFAService.CompleteBrowserMFAChallenge:input_type -> teleport.mfa.v2.CompleteBrowserMFAChallengeRequest
+ 1, // 15: teleport.mfa.v2.MFAService.CreateSessionChallenge:output_type -> teleport.mfa.v2.CreateSessionChallengeResponse
+ 3, // 16: teleport.mfa.v2.MFAService.ValidateSessionChallenge:output_type -> teleport.mfa.v2.ValidateSessionChallengeResponse
+ 6, // 17: teleport.mfa.v2.MFAService.ListValidatedMFAChallenges:output_type -> teleport.mfa.v2.ListValidatedMFAChallengesResponse
+ 8, // 18: teleport.mfa.v2.MFAService.ReplicateValidatedMFAChallenge:output_type -> teleport.mfa.v2.ReplicateValidatedMFAChallengeResponse
+ 10, // 19: teleport.mfa.v2.MFAService.VerifyValidatedMFAChallenge:output_type -> teleport.mfa.v2.VerifyValidatedMFAChallengeResponse
+ 12, // 20: teleport.mfa.v2.MFAService.CompleteBrowserMFAChallenge:output_type -> teleport.mfa.v2.CompleteBrowserMFAChallengeResponse
+ 15, // [15:21] is the sub-list for method output_type
+ 9, // [9:15] is the sub-list for method input_type
+ 9, // [9:9] is the sub-list for extension type_name
+ 9, // [9:9] is the sub-list for extension extendee
+ 0, // [0:9] is the sub-list for field type_name
+}
+
+func init() { file_teleport_mfa_v2_service_proto_init() }
+func file_teleport_mfa_v2_service_proto_init() {
+ if File_teleport_mfa_v2_service_proto != nil {
+ return
+ }
+ file_teleport_mfa_v2_challenge_proto_init()
+ file_teleport_mfa_v2_validated_challenge_proto_init()
+ file_teleport_mfa_v2_service_proto_msgTypes[4].OneofWrappers = []any{}
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_mfa_v2_service_proto_rawDesc), len(file_teleport_mfa_v2_service_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 13,
+ NumExtensions: 0,
+ NumServices: 1,
+ },
+ GoTypes: file_teleport_mfa_v2_service_proto_goTypes,
+ DependencyIndexes: file_teleport_mfa_v2_service_proto_depIdxs,
+ MessageInfos: file_teleport_mfa_v2_service_proto_msgTypes,
+ }.Build()
+ File_teleport_mfa_v2_service_proto = out.File
+ file_teleport_mfa_v2_service_proto_goTypes = nil
+ file_teleport_mfa_v2_service_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/mfa/v2/service.pb.go b/api/gen/proto/go/teleport/mfa/v2/service_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/mfa/v2/service.pb.go
rename to api/gen/proto/go/teleport/mfa/v2/service_protoopaque.pb.go
index abb3251f134..98ebf5adb75 100644
--- a/api/gen/proto/go/teleport/mfa/v2/service.pb.go
+++ b/api/gen/proto/go/teleport/mfa/v2/service_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/mfa/v2/service.proto
+//go:build !teleport_protohybrid
+
package mfav2
import (
diff --git a/api/gen/proto/go/teleport/mfa/v2/validated_challenge_protohybrid.pb.go b/api/gen/proto/go/teleport/mfa/v2/validated_challenge_protohybrid.pb.go
new file mode 100644
index 00000000000..4b5a3bcaefc
--- /dev/null
+++ b/api/gen/proto/go/teleport/mfa/v2/validated_challenge_protohybrid.pb.go
@@ -0,0 +1,562 @@
+// Copyright 2026 Gravitational, Inc
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/mfa/v2/validated_challenge.proto
+
+//go:build teleport_protohybrid
+
+package mfav2
+
+import (
+ v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1"
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// ValidatedMFAChallenge represents a validated MFA challenge tied to a user session.
+type ValidatedMFAChallenge struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Resource kind, always 'validated_mfa_challenge'.
+ Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"`
+ // No sub-kinds are currently defined and can be empty. Reserved for future use.
+ SubKind string `protobuf:"bytes,2,opt,name=sub_kind,json=subKind,proto3" json:"sub_kind,omitempty"`
+ // Currently only 'v1' is supported.
+ Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
+ // Common metadata for the resource.
+ Metadata *v1.Metadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"`
+ // Validated challenge specification.
+ Spec *ValidatedMFAChallengeSpec `protobuf:"bytes,5,opt,name=spec,proto3" json:"spec,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ValidatedMFAChallenge) Reset() {
+ *x = ValidatedMFAChallenge{}
+ mi := &file_teleport_mfa_v2_validated_challenge_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ValidatedMFAChallenge) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValidatedMFAChallenge) ProtoMessage() {}
+
+func (x *ValidatedMFAChallenge) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_validated_challenge_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ValidatedMFAChallenge) GetKind() string {
+ if x != nil {
+ return x.Kind
+ }
+ return ""
+}
+
+func (x *ValidatedMFAChallenge) GetSubKind() string {
+ if x != nil {
+ return x.SubKind
+ }
+ return ""
+}
+
+func (x *ValidatedMFAChallenge) GetVersion() string {
+ if x != nil {
+ return x.Version
+ }
+ return ""
+}
+
+func (x *ValidatedMFAChallenge) GetMetadata() *v1.Metadata {
+ if x != nil {
+ return x.Metadata
+ }
+ return nil
+}
+
+func (x *ValidatedMFAChallenge) GetSpec() *ValidatedMFAChallengeSpec {
+ if x != nil {
+ return x.Spec
+ }
+ return nil
+}
+
+func (x *ValidatedMFAChallenge) SetKind(v string) {
+ x.Kind = v
+}
+
+func (x *ValidatedMFAChallenge) SetSubKind(v string) {
+ x.SubKind = v
+}
+
+func (x *ValidatedMFAChallenge) SetVersion(v string) {
+ x.Version = v
+}
+
+func (x *ValidatedMFAChallenge) SetMetadata(v *v1.Metadata) {
+ x.Metadata = v
+}
+
+func (x *ValidatedMFAChallenge) SetSpec(v *ValidatedMFAChallengeSpec) {
+ x.Spec = v
+}
+
+func (x *ValidatedMFAChallenge) HasMetadata() bool {
+ if x == nil {
+ return false
+ }
+ return x.Metadata != nil
+}
+
+func (x *ValidatedMFAChallenge) HasSpec() bool {
+ if x == nil {
+ return false
+ }
+ return x.Spec != nil
+}
+
+func (x *ValidatedMFAChallenge) ClearMetadata() {
+ x.Metadata = nil
+}
+
+func (x *ValidatedMFAChallenge) ClearSpec() {
+ x.Spec = nil
+}
+
+type ValidatedMFAChallenge_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Resource kind, always 'validated_mfa_challenge'.
+ Kind string
+ // No sub-kinds are currently defined and can be empty. Reserved for future use.
+ SubKind string
+ // Currently only 'v1' is supported.
+ Version string
+ // Common metadata for the resource.
+ Metadata *v1.Metadata
+ // Validated challenge specification.
+ Spec *ValidatedMFAChallengeSpec
+}
+
+func (b0 ValidatedMFAChallenge_builder) Build() *ValidatedMFAChallenge {
+ m0 := &ValidatedMFAChallenge{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Kind = b.Kind
+ x.SubKind = b.SubKind
+ x.Version = b.Version
+ x.Metadata = b.Metadata
+ x.Spec = b.Spec
+ return m0
+}
+
+// ValidatedMFAChallengeSpec contains the validated challenge data that is set once during creation and never modified.
+type ValidatedMFAChallengeSpec struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Value that uniquely identifies the user's session. Supplied in CreateSessionChallengeRequest.
+ Payload *SessionIdentifyingPayload `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"`
+ // Name of the cluster where the validated challenge originated.
+ SourceCluster string `protobuf:"bytes,2,opt,name=source_cluster,json=sourceCluster,proto3" json:"source_cluster,omitempty"`
+ // Name of the cluster where the SSH session is being established and this resource is intended for.
+ TargetCluster string `protobuf:"bytes,3,opt,name=target_cluster,json=targetCluster,proto3" json:"target_cluster,omitempty"`
+ // Username of the Teleport user for whom the challenge was issued. This should be the Teleport username (not the SSH
+ // login name) and must correspond to a user in the cluster specified to source_cluster.
+ Username string `protobuf:"bytes,4,opt,name=username,proto3" json:"username,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ValidatedMFAChallengeSpec) Reset() {
+ *x = ValidatedMFAChallengeSpec{}
+ mi := &file_teleport_mfa_v2_validated_challenge_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ValidatedMFAChallengeSpec) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ValidatedMFAChallengeSpec) ProtoMessage() {}
+
+func (x *ValidatedMFAChallengeSpec) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_validated_challenge_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *ValidatedMFAChallengeSpec) GetPayload() *SessionIdentifyingPayload {
+ if x != nil {
+ return x.Payload
+ }
+ return nil
+}
+
+func (x *ValidatedMFAChallengeSpec) GetSourceCluster() string {
+ if x != nil {
+ return x.SourceCluster
+ }
+ return ""
+}
+
+func (x *ValidatedMFAChallengeSpec) GetTargetCluster() string {
+ if x != nil {
+ return x.TargetCluster
+ }
+ return ""
+}
+
+func (x *ValidatedMFAChallengeSpec) GetUsername() string {
+ if x != nil {
+ return x.Username
+ }
+ return ""
+}
+
+func (x *ValidatedMFAChallengeSpec) SetPayload(v *SessionIdentifyingPayload) {
+ x.Payload = v
+}
+
+func (x *ValidatedMFAChallengeSpec) SetSourceCluster(v string) {
+ x.SourceCluster = v
+}
+
+func (x *ValidatedMFAChallengeSpec) SetTargetCluster(v string) {
+ x.TargetCluster = v
+}
+
+func (x *ValidatedMFAChallengeSpec) SetUsername(v string) {
+ x.Username = v
+}
+
+func (x *ValidatedMFAChallengeSpec) HasPayload() bool {
+ if x == nil {
+ return false
+ }
+ return x.Payload != nil
+}
+
+func (x *ValidatedMFAChallengeSpec) ClearPayload() {
+ x.Payload = nil
+}
+
+type ValidatedMFAChallengeSpec_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Value that uniquely identifies the user's session. Supplied in CreateSessionChallengeRequest.
+ Payload *SessionIdentifyingPayload
+ // Name of the cluster where the validated challenge originated.
+ SourceCluster string
+ // Name of the cluster where the SSH session is being established and this resource is intended for.
+ TargetCluster string
+ // Username of the Teleport user for whom the challenge was issued. This should be the Teleport username (not the SSH
+ // login name) and must correspond to a user in the cluster specified to source_cluster.
+ Username string
+}
+
+func (b0 ValidatedMFAChallengeSpec_builder) Build() *ValidatedMFAChallengeSpec {
+ m0 := &ValidatedMFAChallengeSpec{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Payload = b.Payload
+ x.SourceCluster = b.SourceCluster
+ x.TargetCluster = b.TargetCluster
+ x.Username = b.Username
+ return m0
+}
+
+// SessionIdentifyingPayload contains a value that uniquely identifies a user's session. It must be computed by the
+// client from session state and is used to bind MFA challenges to specific sessions.
+type SessionIdentifyingPayload struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Types that are valid to be assigned to Payload:
+ //
+ // *SessionIdentifyingPayload_SshSessionId
+ // *SessionIdentifyingPayload_TlsSessionId
+ Payload isSessionIdentifyingPayload_Payload `protobuf_oneof:"payload"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SessionIdentifyingPayload) Reset() {
+ *x = SessionIdentifyingPayload{}
+ mi := &file_teleport_mfa_v2_validated_challenge_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SessionIdentifyingPayload) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SessionIdentifyingPayload) ProtoMessage() {}
+
+func (x *SessionIdentifyingPayload) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_mfa_v2_validated_challenge_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *SessionIdentifyingPayload) GetPayload() isSessionIdentifyingPayload_Payload {
+ if x != nil {
+ return x.Payload
+ }
+ return nil
+}
+
+func (x *SessionIdentifyingPayload) GetSshSessionId() []byte {
+ if x != nil {
+ if x, ok := x.Payload.(*SessionIdentifyingPayload_SshSessionId); ok {
+ return x.SshSessionId
+ }
+ }
+ return nil
+}
+
+func (x *SessionIdentifyingPayload) GetTlsSessionId() []byte {
+ if x != nil {
+ if x, ok := x.Payload.(*SessionIdentifyingPayload_TlsSessionId); ok {
+ return x.TlsSessionId
+ }
+ }
+ return nil
+}
+
+func (x *SessionIdentifyingPayload) SetSshSessionId(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.Payload = &SessionIdentifyingPayload_SshSessionId{v}
+}
+
+func (x *SessionIdentifyingPayload) SetTlsSessionId(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.Payload = &SessionIdentifyingPayload_TlsSessionId{v}
+}
+
+func (x *SessionIdentifyingPayload) HasPayload() bool {
+ if x == nil {
+ return false
+ }
+ return x.Payload != nil
+}
+
+func (x *SessionIdentifyingPayload) HasSshSessionId() bool {
+ if x == nil {
+ return false
+ }
+ _, ok := x.Payload.(*SessionIdentifyingPayload_SshSessionId)
+ return ok
+}
+
+func (x *SessionIdentifyingPayload) HasTlsSessionId() bool {
+ if x == nil {
+ return false
+ }
+ _, ok := x.Payload.(*SessionIdentifyingPayload_TlsSessionId)
+ return ok
+}
+
+func (x *SessionIdentifyingPayload) ClearPayload() {
+ x.Payload = nil
+}
+
+func (x *SessionIdentifyingPayload) ClearSshSessionId() {
+ if _, ok := x.Payload.(*SessionIdentifyingPayload_SshSessionId); ok {
+ x.Payload = nil
+ }
+}
+
+func (x *SessionIdentifyingPayload) ClearTlsSessionId() {
+ if _, ok := x.Payload.(*SessionIdentifyingPayload_TlsSessionId); ok {
+ x.Payload = nil
+ }
+}
+
+const SessionIdentifyingPayload_Payload_not_set_case case_SessionIdentifyingPayload_Payload = 0
+const SessionIdentifyingPayload_SshSessionId_case case_SessionIdentifyingPayload_Payload = 1
+const SessionIdentifyingPayload_TlsSessionId_case case_SessionIdentifyingPayload_Payload = 2
+
+func (x *SessionIdentifyingPayload) WhichPayload() case_SessionIdentifyingPayload_Payload {
+ if x == nil {
+ return SessionIdentifyingPayload_Payload_not_set_case
+ }
+ switch x.Payload.(type) {
+ case *SessionIdentifyingPayload_SshSessionId:
+ return SessionIdentifyingPayload_SshSessionId_case
+ case *SessionIdentifyingPayload_TlsSessionId:
+ return SessionIdentifyingPayload_TlsSessionId_case
+ default:
+ return SessionIdentifyingPayload_Payload_not_set_case
+ }
+}
+
+type SessionIdentifyingPayload_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Fields of oneof Payload:
+ // SSH session hash computed from session state. For example, in Go this is the value from
+ // crypto/ssh#ConnMetadata.SessionID().
+ SshSessionId []byte
+ // TLS session hash derived from the TLS connection using RFC 5705 exportable keying material. For example, in Go
+ // this is the value from crypto/tls#ConnectionState.ExportKeyingMaterial().
+ TlsSessionId []byte
+ // -- end of Payload
+}
+
+func (b0 SessionIdentifyingPayload_builder) Build() *SessionIdentifyingPayload {
+ m0 := &SessionIdentifyingPayload{}
+ b, x := &b0, m0
+ _, _ = b, x
+ if b.SshSessionId != nil {
+ x.Payload = &SessionIdentifyingPayload_SshSessionId{b.SshSessionId}
+ }
+ if b.TlsSessionId != nil {
+ x.Payload = &SessionIdentifyingPayload_TlsSessionId{b.TlsSessionId}
+ }
+ return m0
+}
+
+type case_SessionIdentifyingPayload_Payload protoreflect.FieldNumber
+
+func (x case_SessionIdentifyingPayload_Payload) String() string {
+ md := file_teleport_mfa_v2_validated_challenge_proto_msgTypes[2].Descriptor()
+ if x == 0 {
+ return "not set"
+ }
+ return protoimpl.X.MessageFieldStringOf(md, protoreflect.FieldNumber(x))
+}
+
+type isSessionIdentifyingPayload_Payload interface {
+ isSessionIdentifyingPayload_Payload()
+}
+
+type SessionIdentifyingPayload_SshSessionId struct {
+ // SSH session hash computed from session state. For example, in Go this is the value from
+ // crypto/ssh#ConnMetadata.SessionID().
+ SshSessionId []byte `protobuf:"bytes,1,opt,name=ssh_session_id,json=sshSessionId,proto3,oneof"`
+}
+
+type SessionIdentifyingPayload_TlsSessionId struct {
+ // TLS session hash derived from the TLS connection using RFC 5705 exportable keying material. For example, in Go
+ // this is the value from crypto/tls#ConnectionState.ExportKeyingMaterial().
+ TlsSessionId []byte `protobuf:"bytes,2,opt,name=tls_session_id,json=tlsSessionId,proto3,oneof"`
+}
+
+func (*SessionIdentifyingPayload_SshSessionId) isSessionIdentifyingPayload_Payload() {}
+
+func (*SessionIdentifyingPayload_TlsSessionId) isSessionIdentifyingPayload_Payload() {}
+
+var File_teleport_mfa_v2_validated_challenge_proto protoreflect.FileDescriptor
+
+const file_teleport_mfa_v2_validated_challenge_proto_rawDesc = "" +
+ "\n" +
+ ")teleport/mfa/v2/validated_challenge.proto\x12\x0fteleport.mfa.v2\x1a!teleport/header/v1/metadata.proto\"\xda\x01\n" +
+ "\x15ValidatedMFAChallenge\x12\x12\n" +
+ "\x04kind\x18\x01 \x01(\tR\x04kind\x12\x19\n" +
+ "\bsub_kind\x18\x02 \x01(\tR\asubKind\x12\x18\n" +
+ "\aversion\x18\x03 \x01(\tR\aversion\x128\n" +
+ "\bmetadata\x18\x04 \x01(\v2\x1c.teleport.header.v1.MetadataR\bmetadata\x12>\n" +
+ "\x04spec\x18\x05 \x01(\v2*.teleport.mfa.v2.ValidatedMFAChallengeSpecR\x04spec\"\xcb\x01\n" +
+ "\x19ValidatedMFAChallengeSpec\x12D\n" +
+ "\apayload\x18\x01 \x01(\v2*.teleport.mfa.v2.SessionIdentifyingPayloadR\apayload\x12%\n" +
+ "\x0esource_cluster\x18\x02 \x01(\tR\rsourceCluster\x12%\n" +
+ "\x0etarget_cluster\x18\x03 \x01(\tR\rtargetCluster\x12\x1a\n" +
+ "\busername\x18\x04 \x01(\tR\busername\"v\n" +
+ "\x19SessionIdentifyingPayload\x12&\n" +
+ "\x0essh_session_id\x18\x01 \x01(\fH\x00R\fsshSessionId\x12&\n" +
+ "\x0etls_session_id\x18\x02 \x01(\fH\x00R\ftlsSessionIdB\t\n" +
+ "\apayloadBJZHgithub.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v2;mfav2b\x06proto3"
+
+var file_teleport_mfa_v2_validated_challenge_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_teleport_mfa_v2_validated_challenge_proto_goTypes = []any{
+ (*ValidatedMFAChallenge)(nil), // 0: teleport.mfa.v2.ValidatedMFAChallenge
+ (*ValidatedMFAChallengeSpec)(nil), // 1: teleport.mfa.v2.ValidatedMFAChallengeSpec
+ (*SessionIdentifyingPayload)(nil), // 2: teleport.mfa.v2.SessionIdentifyingPayload
+ (*v1.Metadata)(nil), // 3: teleport.header.v1.Metadata
+}
+var file_teleport_mfa_v2_validated_challenge_proto_depIdxs = []int32{
+ 3, // 0: teleport.mfa.v2.ValidatedMFAChallenge.metadata:type_name -> teleport.header.v1.Metadata
+ 1, // 1: teleport.mfa.v2.ValidatedMFAChallenge.spec:type_name -> teleport.mfa.v2.ValidatedMFAChallengeSpec
+ 2, // 2: teleport.mfa.v2.ValidatedMFAChallengeSpec.payload:type_name -> teleport.mfa.v2.SessionIdentifyingPayload
+ 3, // [3:3] is the sub-list for method output_type
+ 3, // [3:3] is the sub-list for method input_type
+ 3, // [3:3] is the sub-list for extension type_name
+ 3, // [3:3] is the sub-list for extension extendee
+ 0, // [0:3] is the sub-list for field type_name
+}
+
+func init() { file_teleport_mfa_v2_validated_challenge_proto_init() }
+func file_teleport_mfa_v2_validated_challenge_proto_init() {
+ if File_teleport_mfa_v2_validated_challenge_proto != nil {
+ return
+ }
+ file_teleport_mfa_v2_validated_challenge_proto_msgTypes[2].OneofWrappers = []any{
+ (*SessionIdentifyingPayload_SshSessionId)(nil),
+ (*SessionIdentifyingPayload_TlsSessionId)(nil),
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_mfa_v2_validated_challenge_proto_rawDesc), len(file_teleport_mfa_v2_validated_challenge_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_teleport_mfa_v2_validated_challenge_proto_goTypes,
+ DependencyIndexes: file_teleport_mfa_v2_validated_challenge_proto_depIdxs,
+ MessageInfos: file_teleport_mfa_v2_validated_challenge_proto_msgTypes,
+ }.Build()
+ File_teleport_mfa_v2_validated_challenge_proto = out.File
+ file_teleport_mfa_v2_validated_challenge_proto_goTypes = nil
+ file_teleport_mfa_v2_validated_challenge_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/mfa/v2/validated_challenge.pb.go b/api/gen/proto/go/teleport/mfa/v2/validated_challenge_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/mfa/v2/validated_challenge.pb.go
rename to api/gen/proto/go/teleport/mfa/v2/validated_challenge_protoopaque.pb.go
index 85e24b6c74b..59a0867dc26 100644
--- a/api/gen/proto/go/teleport/mfa/v2/validated_challenge.pb.go
+++ b/api/gen/proto/go/teleport/mfa/v2/validated_challenge_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/mfa/v2/validated_challenge.proto
+//go:build !teleport_protohybrid
+
package mfav2
import (
diff --git a/api/gen/proto/go/teleport/notifications/v1/notifications.pb.go b/api/gen/proto/go/teleport/notifications/v1/notifications_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/notifications/v1/notifications.pb.go
rename to api/gen/proto/go/teleport/notifications/v1/notifications_protohybrid.pb.go
index 65c8477d011..0d85aecec73 100644
--- a/api/gen/proto/go/teleport/notifications/v1/notifications.pb.go
+++ b/api/gen/proto/go/teleport/notifications/v1/notifications_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/notifications/v1/notifications.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package notificationsv1
diff --git a/api/gen/proto/go/teleport/notifications/v1/notifications_protoopaque.pb.go b/api/gen/proto/go/teleport/notifications/v1/notifications_protoopaque.pb.go
index c46a7bc4c2a..043fa6a0184 100644
--- a/api/gen/proto/go/teleport/notifications/v1/notifications_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/notifications/v1/notifications_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/notifications/v1/notifications.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package notificationsv1
diff --git a/api/gen/proto/go/teleport/notifications/v1/notifications_service.pb.go b/api/gen/proto/go/teleport/notifications/v1/notifications_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/notifications/v1/notifications_service.pb.go
rename to api/gen/proto/go/teleport/notifications/v1/notifications_service_protohybrid.pb.go
index 68558236577..7b8517c91ec 100644
--- a/api/gen/proto/go/teleport/notifications/v1/notifications_service.pb.go
+++ b/api/gen/proto/go/teleport/notifications/v1/notifications_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/notifications/v1/notifications_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package notificationsv1
diff --git a/api/gen/proto/go/teleport/notifications/v1/notifications_service_protoopaque.pb.go b/api/gen/proto/go/teleport/notifications/v1/notifications_service_protoopaque.pb.go
index b86e1642265..d8d5746f6b2 100644
--- a/api/gen/proto/go/teleport/notifications/v1/notifications_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/notifications/v1/notifications_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/notifications/v1/notifications_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package notificationsv1
diff --git a/api/gen/proto/go/teleport/okta/v1/okta_service.pb.go b/api/gen/proto/go/teleport/okta/v1/okta_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/okta/v1/okta_service.pb.go
rename to api/gen/proto/go/teleport/okta/v1/okta_service_protohybrid.pb.go
index 7672f4bbbdf..524cdf17ae2 100644
--- a/api/gen/proto/go/teleport/okta/v1/okta_service.pb.go
+++ b/api/gen/proto/go/teleport/okta/v1/okta_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/okta/v1/okta_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package oktav1
diff --git a/api/gen/proto/go/teleport/okta/v1/okta_service_protoopaque.pb.go b/api/gen/proto/go/teleport/okta/v1/okta_service_protoopaque.pb.go
index 8d657324fdc..d2d765931f8 100644
--- a/api/gen/proto/go/teleport/okta/v1/okta_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/okta/v1/okta_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/okta/v1/okta_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package oktav1
diff --git a/api/gen/proto/go/teleport/plugins/v1/plugin_service.pb.go b/api/gen/proto/go/teleport/plugins/v1/plugin_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/plugins/v1/plugin_service.pb.go
rename to api/gen/proto/go/teleport/plugins/v1/plugin_service_protohybrid.pb.go
index 979ad17fa7b..46aed03fffd 100644
--- a/api/gen/proto/go/teleport/plugins/v1/plugin_service.pb.go
+++ b/api/gen/proto/go/teleport/plugins/v1/plugin_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/plugins/v1/plugin_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package pluginsv1
diff --git a/api/gen/proto/go/teleport/plugins/v1/plugin_service_protoopaque.pb.go b/api/gen/proto/go/teleport/plugins/v1/plugin_service_protoopaque.pb.go
index ee26a0e7953..f0bc6d12ffa 100644
--- a/api/gen/proto/go/teleport/plugins/v1/plugin_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/plugins/v1/plugin_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/plugins/v1/plugin_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package pluginsv1
diff --git a/api/gen/proto/go/teleport/presence/v1/relay_server.pb.go b/api/gen/proto/go/teleport/presence/v1/relay_server_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/presence/v1/relay_server.pb.go
rename to api/gen/proto/go/teleport/presence/v1/relay_server_protohybrid.pb.go
index dd24a93be36..85505819242 100644
--- a/api/gen/proto/go/teleport/presence/v1/relay_server.pb.go
+++ b/api/gen/proto/go/teleport/presence/v1/relay_server_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/presence/v1/relay_server.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package presencev1
diff --git a/api/gen/proto/go/teleport/presence/v1/relay_server_protoopaque.pb.go b/api/gen/proto/go/teleport/presence/v1/relay_server_protoopaque.pb.go
index 0f1be5321e1..7e5bd886a26 100644
--- a/api/gen/proto/go/teleport/presence/v1/relay_server_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/presence/v1/relay_server_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/presence/v1/relay_server.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package presencev1
diff --git a/api/gen/proto/go/teleport/presence/v1/service.pb.go b/api/gen/proto/go/teleport/presence/v1/service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/presence/v1/service.pb.go
rename to api/gen/proto/go/teleport/presence/v1/service_protohybrid.pb.go
index 6a284320e31..ccb85fc7402 100644
--- a/api/gen/proto/go/teleport/presence/v1/service.pb.go
+++ b/api/gen/proto/go/teleport/presence/v1/service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/presence/v1/service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package presencev1
diff --git a/api/gen/proto/go/teleport/presence/v1/service_protoopaque.pb.go b/api/gen/proto/go/teleport/presence/v1/service_protoopaque.pb.go
index 7455907d68d..d05d288be19 100644
--- a/api/gen/proto/go/teleport/presence/v1/service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/presence/v1/service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/presence/v1/service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package presencev1
diff --git a/api/gen/proto/go/teleport/provisioning/v1/provisioning.pb.go b/api/gen/proto/go/teleport/provisioning/v1/provisioning_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/provisioning/v1/provisioning.pb.go
rename to api/gen/proto/go/teleport/provisioning/v1/provisioning_protohybrid.pb.go
index 47a56b4d731..e0a7d330cc1 100644
--- a/api/gen/proto/go/teleport/provisioning/v1/provisioning.pb.go
+++ b/api/gen/proto/go/teleport/provisioning/v1/provisioning_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/provisioning/v1/provisioning.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package provisioningv1
diff --git a/api/gen/proto/go/teleport/provisioning/v1/provisioning_protoopaque.pb.go b/api/gen/proto/go/teleport/provisioning/v1/provisioning_protoopaque.pb.go
index 5ea94242458..c16e0824866 100644
--- a/api/gen/proto/go/teleport/provisioning/v1/provisioning_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/provisioning/v1/provisioning_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/provisioning/v1/provisioning.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package provisioningv1
diff --git a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption.pb.go b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption.pb.go
rename to api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protohybrid.pb.go
index 9abb428cb20..be8c3534382 100644
--- a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption.pb.go
+++ b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/recordingencryption/v1/recording_encryption.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package recordingencryptionv1
diff --git a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protoopaque.pb.go b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protoopaque.pb.go
index 639ef2d71e0..644507e7f1d 100644
--- a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/recordingencryption/v1/recording_encryption.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package recordingencryptionv1
diff --git a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service.pb.go b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service.pb.go
rename to api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protohybrid.pb.go
index 97ce88b426a..18ccb0804e4 100644
--- a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service.pb.go
+++ b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/recordingencryption/v1/recording_encryption_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package recordingencryptionv1
diff --git a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protoopaque.pb.go b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protoopaque.pb.go
index 4f903da0f58..1c5e6ec34cf 100644
--- a/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/recordingencryption/v1/recording_encryption_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package recordingencryptionv1
diff --git a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata.pb.go b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata.pb.go
rename to api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protohybrid.pb.go
index 674e864e59f..85392dfd79d 100644
--- a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata.pb.go
+++ b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protohybrid.pb.go
@@ -19,7 +19,7 @@
// protoc (unknown)
// source: teleport/recordingmetadata/v1/recordingmetadata.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package recordingmetadatav1
diff --git a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protoopaque.pb.go b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protoopaque.pb.go
index 8581ab941a9..276edfa8cb1 100644
--- a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_protoopaque.pb.go
@@ -19,7 +19,7 @@
// protoc (unknown)
// source: teleport/recordingmetadata/v1/recordingmetadata.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package recordingmetadatav1
diff --git a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service.pb.go b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service.pb.go
rename to api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protohybrid.pb.go
index 3a2b29d61cf..9721e12ab44 100644
--- a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service.pb.go
+++ b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/recordingmetadata/v1/recordingmetadata_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package recordingmetadatav1
diff --git a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protoopaque.pb.go b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protoopaque.pb.go
index 01d2ce787a5..f3396699d04 100644
--- a/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/recordingmetadata/v1/recordingmetadata_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package recordingmetadatav1
diff --git a/api/gen/proto/go/teleport/resourceusage/v1/access_requests.pb.go b/api/gen/proto/go/teleport/resourceusage/v1/access_requests_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/resourceusage/v1/access_requests.pb.go
rename to api/gen/proto/go/teleport/resourceusage/v1/access_requests_protohybrid.pb.go
index 12668b5f54b..941d9305d2a 100644
--- a/api/gen/proto/go/teleport/resourceusage/v1/access_requests.pb.go
+++ b/api/gen/proto/go/teleport/resourceusage/v1/access_requests_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/resourceusage/v1/access_requests.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package resourceusagev1
diff --git a/api/gen/proto/go/teleport/resourceusage/v1/access_requests_protoopaque.pb.go b/api/gen/proto/go/teleport/resourceusage/v1/access_requests_protoopaque.pb.go
index 35498549681..082d4272582 100644
--- a/api/gen/proto/go/teleport/resourceusage/v1/access_requests_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/resourceusage/v1/access_requests_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/resourceusage/v1/access_requests.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package resourceusagev1
diff --git a/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type.pb.go b/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/resourceusage/v1/account_usage_type.pb.go
rename to api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protohybrid.pb.go
index a2e6d57dac8..fc0c7ee2ef9 100644
--- a/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type.pb.go
+++ b/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/resourceusage/v1/account_usage_type.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package resourceusagev1
diff --git a/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protoopaque.pb.go b/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protoopaque.pb.go
index 891ba81a4ed..b23aab87ad6 100644
--- a/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/resourceusage/v1/account_usage_type_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/resourceusage/v1/account_usage_type.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package resourceusagev1
diff --git a/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service.pb.go b/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service.pb.go
rename to api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protohybrid.pb.go
index 54efaba7cbf..d23462c5631 100644
--- a/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service.pb.go
+++ b/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/resourceusage/v1/resourceusage_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package resourceusagev1
diff --git a/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protoopaque.pb.go b/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protoopaque.pb.go
index 2b04a64483a..ac8db6bf657 100644
--- a/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/resourceusage/v1/resourceusage_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package resourceusagev1
diff --git a/api/gen/proto/go/teleport/samlidp/v1/samlidp.pb.go b/api/gen/proto/go/teleport/samlidp/v1/samlidp_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/samlidp/v1/samlidp.pb.go
rename to api/gen/proto/go/teleport/samlidp/v1/samlidp_protohybrid.pb.go
index a70c8fa6b8d..35426a4722b 100644
--- a/api/gen/proto/go/teleport/samlidp/v1/samlidp.pb.go
+++ b/api/gen/proto/go/teleport/samlidp/v1/samlidp_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/samlidp/v1/samlidp.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package samlidpv1
diff --git a/api/gen/proto/go/teleport/samlidp/v1/samlidp_protoopaque.pb.go b/api/gen/proto/go/teleport/samlidp/v1/samlidp_protoopaque.pb.go
index 18e4f07e52c..0787bc231b4 100644
--- a/api/gen/proto/go/teleport/samlidp/v1/samlidp_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/samlidp/v1/samlidp_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/samlidp/v1/samlidp.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package samlidpv1
diff --git a/api/gen/proto/go/teleport/scim/v1/scim_service.pb.go b/api/gen/proto/go/teleport/scim/v1/scim_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scim/v1/scim_service.pb.go
rename to api/gen/proto/go/teleport/scim/v1/scim_service_protohybrid.pb.go
index 55a8d7d453b..37a2ea4c0e0 100644
--- a/api/gen/proto/go/teleport/scim/v1/scim_service.pb.go
+++ b/api/gen/proto/go/teleport/scim/v1/scim_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scim/v1/scim_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package scimv1
diff --git a/api/gen/proto/go/teleport/scim/v1/scim_service_protoopaque.pb.go b/api/gen/proto/go/teleport/scim/v1/scim_service_protoopaque.pb.go
index bca00a7a912..cc86a5e46e9 100644
--- a/api/gen/proto/go/teleport/scim/v1/scim_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scim/v1/scim_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scim/v1/scim_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package scimv1
diff --git a/api/gen/proto/go/teleport/scopes/access/v1/assignment.pb.go b/api/gen/proto/go/teleport/scopes/access/v1/assignment_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scopes/access/v1/assignment.pb.go
rename to api/gen/proto/go/teleport/scopes/access/v1/assignment_protohybrid.pb.go
index 3a370e64ec3..68b6228bdd0 100644
--- a/api/gen/proto/go/teleport/scopes/access/v1/assignment.pb.go
+++ b/api/gen/proto/go/teleport/scopes/access/v1/assignment_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/access/v1/assignment.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessv1
diff --git a/api/gen/proto/go/teleport/scopes/access/v1/assignment_protoopaque.pb.go b/api/gen/proto/go/teleport/scopes/access/v1/assignment_protoopaque.pb.go
index 5dd8259e3c0..edfde9e1f46 100644
--- a/api/gen/proto/go/teleport/scopes/access/v1/assignment_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scopes/access/v1/assignment_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/access/v1/assignment.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessv1
diff --git a/api/gen/proto/go/teleport/scopes/access/v1/role.pb.go b/api/gen/proto/go/teleport/scopes/access/v1/role_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scopes/access/v1/role.pb.go
rename to api/gen/proto/go/teleport/scopes/access/v1/role_protohybrid.pb.go
index 2feca36f360..e729d21c03c 100644
--- a/api/gen/proto/go/teleport/scopes/access/v1/role.pb.go
+++ b/api/gen/proto/go/teleport/scopes/access/v1/role_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/access/v1/role.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessv1
diff --git a/api/gen/proto/go/teleport/scopes/access/v1/role_protoopaque.pb.go b/api/gen/proto/go/teleport/scopes/access/v1/role_protoopaque.pb.go
index a9309eb386c..167248dddd4 100644
--- a/api/gen/proto/go/teleport/scopes/access/v1/role_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scopes/access/v1/role_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/access/v1/role.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessv1
diff --git a/api/gen/proto/go/teleport/scopes/access/v1/service.pb.go b/api/gen/proto/go/teleport/scopes/access/v1/service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scopes/access/v1/service.pb.go
rename to api/gen/proto/go/teleport/scopes/access/v1/service_protohybrid.pb.go
index d8c57d189e2..dff85d9e2c6 100644
--- a/api/gen/proto/go/teleport/scopes/access/v1/service.pb.go
+++ b/api/gen/proto/go/teleport/scopes/access/v1/service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/access/v1/service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessv1
diff --git a/api/gen/proto/go/teleport/scopes/access/v1/service_protoopaque.pb.go b/api/gen/proto/go/teleport/scopes/access/v1/service_protoopaque.pb.go
index 3d401e50c2b..9bc033a2d9e 100644
--- a/api/gen/proto/go/teleport/scopes/access/v1/service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scopes/access/v1/service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/access/v1/service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessv1
diff --git a/api/gen/proto/go/teleport/scopes/joining/v1/service.pb.go b/api/gen/proto/go/teleport/scopes/joining/v1/service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scopes/joining/v1/service.pb.go
rename to api/gen/proto/go/teleport/scopes/joining/v1/service_protohybrid.pb.go
index 704a8d1a753..02ab9ad165e 100644
--- a/api/gen/proto/go/teleport/scopes/joining/v1/service.pb.go
+++ b/api/gen/proto/go/teleport/scopes/joining/v1/service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/joining/v1/service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package joiningv1
diff --git a/api/gen/proto/go/teleport/scopes/joining/v1/service_protoopaque.pb.go b/api/gen/proto/go/teleport/scopes/joining/v1/service_protoopaque.pb.go
index 6106fa764ba..20288b30bb8 100644
--- a/api/gen/proto/go/teleport/scopes/joining/v1/service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scopes/joining/v1/service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/joining/v1/service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package joiningv1
diff --git a/api/gen/proto/go/teleport/scopes/joining/v1/token.pb.go b/api/gen/proto/go/teleport/scopes/joining/v1/token_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scopes/joining/v1/token.pb.go
rename to api/gen/proto/go/teleport/scopes/joining/v1/token_protohybrid.pb.go
index 1f9631bdb28..890b1745c4d 100644
--- a/api/gen/proto/go/teleport/scopes/joining/v1/token.pb.go
+++ b/api/gen/proto/go/teleport/scopes/joining/v1/token_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/joining/v1/token.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package joiningv1
diff --git a/api/gen/proto/go/teleport/scopes/joining/v1/token_protoopaque.pb.go b/api/gen/proto/go/teleport/scopes/joining/v1/token_protoopaque.pb.go
index 2ae92940f96..d7ddeadcc2c 100644
--- a/api/gen/proto/go/teleport/scopes/joining/v1/token_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scopes/joining/v1/token_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/joining/v1/token.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package joiningv1
diff --git a/api/gen/proto/go/teleport/scopes/v1/scopes.pb.go b/api/gen/proto/go/teleport/scopes/v1/scopes_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/scopes/v1/scopes.pb.go
rename to api/gen/proto/go/teleport/scopes/v1/scopes_protohybrid.pb.go
index 0989554759a..30e5fbdc41b 100644
--- a/api/gen/proto/go/teleport/scopes/v1/scopes.pb.go
+++ b/api/gen/proto/go/teleport/scopes/v1/scopes_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/v1/scopes.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package scopesv1
diff --git a/api/gen/proto/go/teleport/scopes/v1/scopes_protoopaque.pb.go b/api/gen/proto/go/teleport/scopes/v1/scopes_protoopaque.pb.go
index 8bc291b9901..10ffa32fcb1 100644
--- a/api/gen/proto/go/teleport/scopes/v1/scopes_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/scopes/v1/scopes_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/scopes/v1/scopes.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package scopesv1
diff --git a/api/gen/proto/go/teleport/secreports/v1/secreports.pb.go b/api/gen/proto/go/teleport/secreports/v1/secreports_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/secreports/v1/secreports.pb.go
rename to api/gen/proto/go/teleport/secreports/v1/secreports_protohybrid.pb.go
index 9a36f910928..9ec99c0b641 100644
--- a/api/gen/proto/go/teleport/secreports/v1/secreports.pb.go
+++ b/api/gen/proto/go/teleport/secreports/v1/secreports_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/secreports/v1/secreports.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package secreportsv1
diff --git a/api/gen/proto/go/teleport/secreports/v1/secreports_protoopaque.pb.go b/api/gen/proto/go/teleport/secreports/v1/secreports_protoopaque.pb.go
index ae604bb832e..792af46ca17 100644
--- a/api/gen/proto/go/teleport/secreports/v1/secreports_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/secreports/v1/secreports_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/secreports/v1/secreports.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package secreportsv1
diff --git a/api/gen/proto/go/teleport/secreports/v1/secreports_service.pb.go b/api/gen/proto/go/teleport/secreports/v1/secreports_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/secreports/v1/secreports_service.pb.go
rename to api/gen/proto/go/teleport/secreports/v1/secreports_service_protohybrid.pb.go
index fcc356d9c6d..8efc43f5797 100644
--- a/api/gen/proto/go/teleport/secreports/v1/secreports_service.pb.go
+++ b/api/gen/proto/go/teleport/secreports/v1/secreports_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/secreports/v1/secreports_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package secreportsv1
diff --git a/api/gen/proto/go/teleport/secreports/v1/secreports_service_protoopaque.pb.go b/api/gen/proto/go/teleport/secreports/v1/secreports_service_protoopaque.pb.go
index 273a2e1d29d..85ca63e2be6 100644
--- a/api/gen/proto/go/teleport/secreports/v1/secreports_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/secreports/v1/secreports_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/secreports/v1/secreports_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package secreportsv1
diff --git a/api/gen/proto/go/teleport/sessionsearch/v1/session_search.pb.go b/api/gen/proto/go/teleport/sessionsearch/v1/session_search_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/sessionsearch/v1/session_search.pb.go
rename to api/gen/proto/go/teleport/sessionsearch/v1/session_search_protohybrid.pb.go
index d85edf3efa8..126ffee7b2e 100644
--- a/api/gen/proto/go/teleport/sessionsearch/v1/session_search.pb.go
+++ b/api/gen/proto/go/teleport/sessionsearch/v1/session_search_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/sessionsearch/v1/session_search.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package sessionsearchv1
diff --git a/api/gen/proto/go/teleport/sessionsearch/v1/session_search_protoopaque.pb.go b/api/gen/proto/go/teleport/sessionsearch/v1/session_search_protoopaque.pb.go
index d17f74a96be..5898b0e5886 100644
--- a/api/gen/proto/go/teleport/sessionsearch/v1/session_search_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/sessionsearch/v1/session_search_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/sessionsearch/v1/session_search.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package sessionsearchv1
diff --git a/api/gen/proto/go/teleport/ssh/v1/ssh.pb.go b/api/gen/proto/go/teleport/ssh/v1/ssh_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/ssh/v1/ssh.pb.go
rename to api/gen/proto/go/teleport/ssh/v1/ssh_protohybrid.pb.go
index 97421cf313c..3d600e38056 100644
--- a/api/gen/proto/go/teleport/ssh/v1/ssh.pb.go
+++ b/api/gen/proto/go/teleport/ssh/v1/ssh_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/ssh/v1/ssh.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package sshpb
diff --git a/api/gen/proto/go/teleport/ssh/v1/ssh_protoopaque.pb.go b/api/gen/proto/go/teleport/ssh/v1/ssh_protoopaque.pb.go
index a618a0c076f..dcd984364ca 100644
--- a/api/gen/proto/go/teleport/ssh/v1/ssh_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/ssh/v1/ssh_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/ssh/v1/ssh.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package sshpb
diff --git a/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers.pb.go b/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers.pb.go
rename to api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protohybrid.pb.go
index 7c6ec958952..b97314e3d54 100644
--- a/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers.pb.go
+++ b/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/stableunixusers/v1/stableunixusers.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package stableunixusersv1
diff --git a/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protoopaque.pb.go b/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protoopaque.pb.go
index 23a46ca45f7..b71994534a2 100644
--- a/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/stableunixusers/v1/stableunixusers.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package stableunixusersv1
diff --git a/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id.pb.go b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/cert_authority_override_id.pb.go
rename to api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protohybrid.pb.go
index aef1f4d2617..ed005776c96 100644
--- a/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/cert_authority_override_id.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protoopaque.pb.go
index 654b4964370..9db27338df3 100644
--- a/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_id_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/cert_authority_override_id.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/cert_authority_override.pb.go b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/cert_authority_override.pb.go
rename to api/gen/proto/go/teleport/subca/v1/cert_authority_override_protohybrid.pb.go
index 3d9bf0120d6..4d037313a26 100644
--- a/api/gen/proto/go/teleport/subca/v1/cert_authority_override.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/cert_authority_override.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/cert_authority_override_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_protoopaque.pb.go
index 950fe3acc86..4b1efa4445c 100644
--- a/api/gen/proto/go/teleport/subca/v1/cert_authority_override_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/cert_authority_override_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/cert_authority_override.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/certificate_override_id.pb.go b/api/gen/proto/go/teleport/subca/v1/certificate_override_id_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/certificate_override_id.pb.go
rename to api/gen/proto/go/teleport/subca/v1/certificate_override_id_protohybrid.pb.go
index 9c31c1c6149..d9c3549aa54 100644
--- a/api/gen/proto/go/teleport/subca/v1/certificate_override_id.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/certificate_override_id_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/certificate_override_id.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/certificate_override_id_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/certificate_override_id_protoopaque.pb.go
index 3eb35554acc..2bd8526c381 100644
--- a/api/gen/proto/go/teleport/subca/v1/certificate_override_id_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/certificate_override_id_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/certificate_override_id.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/certificate_override.pb.go b/api/gen/proto/go/teleport/subca/v1/certificate_override_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/certificate_override.pb.go
rename to api/gen/proto/go/teleport/subca/v1/certificate_override_protohybrid.pb.go
index b61ebbe9492..2793f0b195e 100644
--- a/api/gen/proto/go/teleport/subca/v1/certificate_override.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/certificate_override_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/certificate_override.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/certificate_override_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/certificate_override_protoopaque.pb.go
index a7941c02502..c4d12080f21 100644
--- a/api/gen/proto/go/teleport/subca/v1/certificate_override_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/certificate_override_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/certificate_override.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/crl.pb.go b/api/gen/proto/go/teleport/subca/v1/crl_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/crl.pb.go
rename to api/gen/proto/go/teleport/subca/v1/crl_protohybrid.pb.go
index 30c766b1ef7..284402d3238 100644
--- a/api/gen/proto/go/teleport/subca/v1/crl.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/crl_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/crl.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/crl_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/crl_protoopaque.pb.go
index a2d624d6ce0..1cfa0ed102c 100644
--- a/api/gen/proto/go/teleport/subca/v1/crl_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/crl_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/crl.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/csr.pb.go b/api/gen/proto/go/teleport/subca/v1/csr_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/csr.pb.go
rename to api/gen/proto/go/teleport/subca/v1/csr_protohybrid.pb.go
index 0d1894430f6..7bd6f1f00ff 100644
--- a/api/gen/proto/go/teleport/subca/v1/csr.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/csr_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/csr.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/csr_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/csr_protoopaque.pb.go
index 88cad07799e..8ecff12881f 100644
--- a/api/gen/proto/go/teleport/subca/v1/csr_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/csr_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/csr.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/distinguished_name.pb.go b/api/gen/proto/go/teleport/subca/v1/distinguished_name_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/distinguished_name.pb.go
rename to api/gen/proto/go/teleport/subca/v1/distinguished_name_protohybrid.pb.go
index f2b14efb208..34fb27dc410 100644
--- a/api/gen/proto/go/teleport/subca/v1/distinguished_name.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/distinguished_name_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/distinguished_name.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/distinguished_name_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/distinguished_name_protoopaque.pb.go
index b4026b87232..6ae7d5e753a 100644
--- a/api/gen/proto/go/teleport/subca/v1/distinguished_name_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/distinguished_name_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/distinguished_name.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/public_key_hash.pb.go b/api/gen/proto/go/teleport/subca/v1/public_key_hash_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/public_key_hash.pb.go
rename to api/gen/proto/go/teleport/subca/v1/public_key_hash_protohybrid.pb.go
index abae50e415f..a75e891f009 100644
--- a/api/gen/proto/go/teleport/subca/v1/public_key_hash.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/public_key_hash_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/public_key_hash.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/public_key_hash_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/public_key_hash_protoopaque.pb.go
index 6c7cf4c96fd..2361299e5c5 100644
--- a/api/gen/proto/go/teleport/subca/v1/public_key_hash_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/public_key_hash_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/public_key_hash.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/subca_service.pb.go b/api/gen/proto/go/teleport/subca/v1/subca_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/subca/v1/subca_service.pb.go
rename to api/gen/proto/go/teleport/subca/v1/subca_service_protohybrid.pb.go
index 763fbed9393..0f9eb68e527 100644
--- a/api/gen/proto/go/teleport/subca/v1/subca_service.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/subca_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/subca_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/subca/v1/subca_service_protoopaque.pb.go b/api/gen/proto/go/teleport/subca/v1/subca_service_protoopaque.pb.go
index a0f7a2485f7..e44f261b18b 100644
--- a/api/gen/proto/go/teleport/subca/v1/subca_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/subca/v1/subca_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/subca/v1/subca_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package subcav1
diff --git a/api/gen/proto/go/teleport/summarizer/v1/access_request.pb.go b/api/gen/proto/go/teleport/summarizer/v1/access_request_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/summarizer/v1/access_request.pb.go
rename to api/gen/proto/go/teleport/summarizer/v1/access_request_protohybrid.pb.go
index 9f2db6bcc80..44afc080b1e 100644
--- a/api/gen/proto/go/teleport/summarizer/v1/access_request.pb.go
+++ b/api/gen/proto/go/teleport/summarizer/v1/access_request_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/summarizer/v1/access_request.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package summarizerv1
diff --git a/api/gen/proto/go/teleport/summarizer/v1/access_request_protoopaque.pb.go b/api/gen/proto/go/teleport/summarizer/v1/access_request_protoopaque.pb.go
index c51cca4f9d0..cade557819f 100644
--- a/api/gen/proto/go/teleport/summarizer/v1/access_request_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/summarizer/v1/access_request_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/summarizer/v1/access_request.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package summarizerv1
diff --git a/api/gen/proto/go/teleport/summarizer/v1/summarizer.pb.go b/api/gen/proto/go/teleport/summarizer/v1/summarizer_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/summarizer/v1/summarizer.pb.go
rename to api/gen/proto/go/teleport/summarizer/v1/summarizer_protohybrid.pb.go
index e1e8ca13aac..5c995cdc85f 100644
--- a/api/gen/proto/go/teleport/summarizer/v1/summarizer.pb.go
+++ b/api/gen/proto/go/teleport/summarizer/v1/summarizer_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/summarizer/v1/summarizer.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package summarizerv1
diff --git a/api/gen/proto/go/teleport/summarizer/v1/summarizer_protoopaque.pb.go b/api/gen/proto/go/teleport/summarizer/v1/summarizer_protoopaque.pb.go
index 87b4bd768bb..f758fdc3417 100644
--- a/api/gen/proto/go/teleport/summarizer/v1/summarizer_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/summarizer/v1/summarizer_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/summarizer/v1/summarizer.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package summarizerv1
diff --git a/api/gen/proto/go/teleport/summarizer/v1/summarizer_service.pb.go b/api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/summarizer/v1/summarizer_service.pb.go
rename to api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protohybrid.pb.go
index e41ccb42f36..84219f64f58 100644
--- a/api/gen/proto/go/teleport/summarizer/v1/summarizer_service.pb.go
+++ b/api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/summarizer/v1/summarizer_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package summarizerv1
diff --git a/api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protoopaque.pb.go b/api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protoopaque.pb.go
index 62aa1f6296d..c31c862f02c 100644
--- a/api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/summarizer/v1/summarizer_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/summarizer/v1/summarizer_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package summarizerv1
diff --git a/api/gen/proto/go/teleport/trait/v1/trait.pb.go b/api/gen/proto/go/teleport/trait/v1/trait_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/trait/v1/trait.pb.go
rename to api/gen/proto/go/teleport/trait/v1/trait_protohybrid.pb.go
index 546fad5d4d1..c8282740b46 100644
--- a/api/gen/proto/go/teleport/trait/v1/trait.pb.go
+++ b/api/gen/proto/go/teleport/trait/v1/trait_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/trait/v1/trait.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package traitv1
diff --git a/api/gen/proto/go/teleport/trait/v1/trait_protoopaque.pb.go b/api/gen/proto/go/teleport/trait/v1/trait_protoopaque.pb.go
index b9529b03a13..7e0ebae0e56 100644
--- a/api/gen/proto/go/teleport/trait/v1/trait_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/trait/v1/trait_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/trait/v1/trait.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package traitv1
diff --git a/api/gen/proto/go/teleport/transport/v1/transport_service.pb.go b/api/gen/proto/go/teleport/transport/v1/transport_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/transport/v1/transport_service.pb.go
rename to api/gen/proto/go/teleport/transport/v1/transport_service_protohybrid.pb.go
index 9276e387bac..500eb695fd2 100644
--- a/api/gen/proto/go/teleport/transport/v1/transport_service.pb.go
+++ b/api/gen/proto/go/teleport/transport/v1/transport_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/transport/v1/transport_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package transportv1
diff --git a/api/gen/proto/go/teleport/transport/v1/transport_service_protoopaque.pb.go b/api/gen/proto/go/teleport/transport/v1/transport_service_protoopaque.pb.go
index e622b94a47b..c3120113e45 100644
--- a/api/gen/proto/go/teleport/transport/v1/transport_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/transport/v1/transport_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/transport/v1/transport_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package transportv1
diff --git a/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go b/api/gen/proto/go/teleport/trust/v1/trust_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/trust/v1/trust_service.pb.go
rename to api/gen/proto/go/teleport/trust/v1/trust_service_protohybrid.pb.go
index b592c30220b..b0cefca758d 100644
--- a/api/gen/proto/go/teleport/trust/v1/trust_service.pb.go
+++ b/api/gen/proto/go/teleport/trust/v1/trust_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/trust/v1/trust_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package trustv1
diff --git a/api/gen/proto/go/teleport/trust/v1/trust_service_protoopaque.pb.go b/api/gen/proto/go/teleport/trust/v1/trust_service_protoopaque.pb.go
index 7b907177b2c..42b88ca58e6 100644
--- a/api/gen/proto/go/teleport/trust/v1/trust_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/trust/v1/trust_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/trust/v1/trust_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package trustv1
diff --git a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go
rename to api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protohybrid.pb.go
index 595b579b7fd..40065bb33d4 100644
--- a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go
+++ b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userloginstate/v1/userloginstate.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userloginstatev1
diff --git a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protoopaque.pb.go b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protoopaque.pb.go
index 7841ca34f1c..78630adcfaf 100644
--- a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userloginstate/v1/userloginstate.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userloginstatev1
diff --git a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service.pb.go b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service.pb.go
rename to api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protohybrid.pb.go
index 1866517307e..19d2ffbc040 100644
--- a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service.pb.go
+++ b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userloginstate/v1/userloginstate_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userloginstatev1
diff --git a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protoopaque.pb.go b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protoopaque.pb.go
index d02a6801aa2..0ecad205663 100644
--- a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userloginstate/v1/userloginstate_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userloginstatev1
diff --git a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser.pb.go b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/userprovisioning/v2/statichostuser.pb.go
rename to api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protohybrid.pb.go
index 08f99e4ee40..d0af7c48828 100644
--- a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser.pb.go
+++ b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userprovisioning/v2/statichostuser.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userprovisioningv2
diff --git a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protoopaque.pb.go b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protoopaque.pb.go
index 771c2e88965..fe3bb7bba41 100644
--- a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userprovisioning/v2/statichostuser.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userprovisioningv2
diff --git a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service.pb.go b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service.pb.go
rename to api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protohybrid.pb.go
index 90b4d3b78e1..189e2e94474 100644
--- a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service.pb.go
+++ b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userprovisioning/v2/statichostuser_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userprovisioningv2
diff --git a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protoopaque.pb.go b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protoopaque.pb.go
index 6056019c5b5..a0d416c25e2 100644
--- a/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userprovisioning/v2/statichostuser_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userprovisioningv2
diff --git a/api/gen/proto/go/teleport/users/v1/users_service.pb.go b/api/gen/proto/go/teleport/users/v1/users_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/users/v1/users_service.pb.go
rename to api/gen/proto/go/teleport/users/v1/users_service_protohybrid.pb.go
index 786d82d9de5..efead895538 100644
--- a/api/gen/proto/go/teleport/users/v1/users_service.pb.go
+++ b/api/gen/proto/go/teleport/users/v1/users_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/users/v1/users_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package usersv1
diff --git a/api/gen/proto/go/teleport/users/v1/users_service_protoopaque.pb.go b/api/gen/proto/go/teleport/users/v1/users_service_protoopaque.pb.go
index 63d6b7d936e..6e7a7d05063 100644
--- a/api/gen/proto/go/teleport/users/v1/users_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/users/v1/users_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/users/v1/users_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package usersv1
diff --git a/api/gen/proto/go/teleport/usertasks/v1/user_tasks.pb.go b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/usertasks/v1/user_tasks.pb.go
rename to api/gen/proto/go/teleport/usertasks/v1/user_tasks_protohybrid.pb.go
index 63ed3583c33..acf9cea2cb4 100644
--- a/api/gen/proto/go/teleport/usertasks/v1/user_tasks.pb.go
+++ b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/usertasks/v1/user_tasks.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package usertasksv1
diff --git a/api/gen/proto/go/teleport/usertasks/v1/user_tasks_protoopaque.pb.go b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_protoopaque.pb.go
index e5d9b4f42ca..4f18f51d14b 100644
--- a/api/gen/proto/go/teleport/usertasks/v1/user_tasks_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/usertasks/v1/user_tasks.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package usertasksv1
diff --git a/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service.pb.go b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/usertasks/v1/user_tasks_service.pb.go
rename to api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protohybrid.pb.go
index c8f59bcfd6e..88211168b66 100644
--- a/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service.pb.go
+++ b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/usertasks/v1/user_tasks_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package usertasksv1
diff --git a/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protoopaque.pb.go b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protoopaque.pb.go
index b821d2245e1..a6fca3a2edf 100644
--- a/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/usertasks/v1/user_tasks_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/usertasks/v1/user_tasks_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package usertasksv1
diff --git a/api/gen/proto/go/teleport/vnet/v1/vnet_config.pb.go b/api/gen/proto/go/teleport/vnet/v1/vnet_config_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/vnet/v1/vnet_config.pb.go
rename to api/gen/proto/go/teleport/vnet/v1/vnet_config_protohybrid.pb.go
index c93ea7c8c00..b98449a0a2b 100644
--- a/api/gen/proto/go/teleport/vnet/v1/vnet_config.pb.go
+++ b/api/gen/proto/go/teleport/vnet/v1/vnet_config_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/vnet/v1/vnet_config.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package vnet
diff --git a/api/gen/proto/go/teleport/vnet/v1/vnet_config_protoopaque.pb.go b/api/gen/proto/go/teleport/vnet/v1/vnet_config_protoopaque.pb.go
index 0139df9af0c..a8a7a8a9804 100644
--- a/api/gen/proto/go/teleport/vnet/v1/vnet_config_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/vnet/v1/vnet_config_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/vnet/v1/vnet_config.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package vnet
diff --git a/api/gen/proto/go/teleport/vnet/v1/vnet_config_service.pb.go b/api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/vnet/v1/vnet_config_service.pb.go
rename to api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protohybrid.pb.go
index 8ce1c4a1bf9..c02e914d8d8 100644
--- a/api/gen/proto/go/teleport/vnet/v1/vnet_config_service.pb.go
+++ b/api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/vnet/v1/vnet_config_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package vnet
diff --git a/api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protoopaque.pb.go b/api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protoopaque.pb.go
index 645cd3c2f88..06ec41fd231 100644
--- a/api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/vnet/v1/vnet_config_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/vnet/v1/vnet_config_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package vnet
diff --git a/api/gen/proto/go/teleport/webauthn/v2/webauthn_protohybrid.pb.go b/api/gen/proto/go/teleport/webauthn/v2/webauthn_protohybrid.pb.go
new file mode 100644
index 00000000000..1272b333df2
--- /dev/null
+++ b/api/gen/proto/go/teleport/webauthn/v2/webauthn_protohybrid.pb.go
@@ -0,0 +1,940 @@
+// Copyright 2026 Gravitational, Inc
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: teleport/webauthn/v2/webauthn.proto
+
+//go:build teleport_protohybrid
+
+package webauthnv2
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// Credential assertion used for login ceremonies.
+type CredentialAssertion struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ PublicKey *PublicKeyCredentialRequestOptions `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CredentialAssertion) Reset() {
+ *x = CredentialAssertion{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CredentialAssertion) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CredentialAssertion) ProtoMessage() {}
+
+func (x *CredentialAssertion) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CredentialAssertion) GetPublicKey() *PublicKeyCredentialRequestOptions {
+ if x != nil {
+ return x.PublicKey
+ }
+ return nil
+}
+
+func (x *CredentialAssertion) SetPublicKey(v *PublicKeyCredentialRequestOptions) {
+ x.PublicKey = v
+}
+
+func (x *CredentialAssertion) HasPublicKey() bool {
+ if x == nil {
+ return false
+ }
+ return x.PublicKey != nil
+}
+
+func (x *CredentialAssertion) ClearPublicKey() {
+ x.PublicKey = nil
+}
+
+type CredentialAssertion_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ PublicKey *PublicKeyCredentialRequestOptions
+}
+
+func (b0 CredentialAssertion_builder) Build() *CredentialAssertion {
+ m0 := &CredentialAssertion{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.PublicKey = b.PublicKey
+ return m0
+}
+
+// Request options necessary for credential assertions, aka login ceremonies.
+// See https://www.w3.org/TR/webauthn-2/#dictionary-assertion-options or
+// refer to navigator.credentials.get in your browser.
+type PublicKeyCredentialRequestOptions struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Raw challenge used for assertion.
+ Challenge []byte `protobuf:"bytes,1,opt,name=challenge,proto3" json:"challenge,omitempty"`
+ // Timeout in milliseconds.
+ TimeoutMs int64 `protobuf:"varint,2,opt,name=timeout_ms,json=timeoutMs,proto3" json:"timeout_ms,omitempty"`
+ // Relying Party ID.
+ RpId string `protobuf:"bytes,3,opt,name=rp_id,json=rpId,proto3" json:"rp_id,omitempty"`
+ // Allowed credentials for assertion.
+ AllowCredentials []*CredentialDescriptor `protobuf:"bytes,4,rep,name=allow_credentials,json=allowCredentials,proto3" json:"allow_credentials,omitempty"`
+ // Extensions supplied by the Relying Party.
+ Extensions *AuthenticationExtensionsClientInputs `protobuf:"bytes,5,opt,name=extensions,proto3" json:"extensions,omitempty"`
+ // User verification requirement.
+ UserVerification string `protobuf:"bytes,6,opt,name=user_verification,json=userVerification,proto3" json:"user_verification,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *PublicKeyCredentialRequestOptions) Reset() {
+ *x = PublicKeyCredentialRequestOptions{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PublicKeyCredentialRequestOptions) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PublicKeyCredentialRequestOptions) ProtoMessage() {}
+
+func (x *PublicKeyCredentialRequestOptions) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *PublicKeyCredentialRequestOptions) GetChallenge() []byte {
+ if x != nil {
+ return x.Challenge
+ }
+ return nil
+}
+
+func (x *PublicKeyCredentialRequestOptions) GetTimeoutMs() int64 {
+ if x != nil {
+ return x.TimeoutMs
+ }
+ return 0
+}
+
+func (x *PublicKeyCredentialRequestOptions) GetRpId() string {
+ if x != nil {
+ return x.RpId
+ }
+ return ""
+}
+
+func (x *PublicKeyCredentialRequestOptions) GetAllowCredentials() []*CredentialDescriptor {
+ if x != nil {
+ return x.AllowCredentials
+ }
+ return nil
+}
+
+func (x *PublicKeyCredentialRequestOptions) GetExtensions() *AuthenticationExtensionsClientInputs {
+ if x != nil {
+ return x.Extensions
+ }
+ return nil
+}
+
+func (x *PublicKeyCredentialRequestOptions) GetUserVerification() string {
+ if x != nil {
+ return x.UserVerification
+ }
+ return ""
+}
+
+func (x *PublicKeyCredentialRequestOptions) SetChallenge(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.Challenge = v
+}
+
+func (x *PublicKeyCredentialRequestOptions) SetTimeoutMs(v int64) {
+ x.TimeoutMs = v
+}
+
+func (x *PublicKeyCredentialRequestOptions) SetRpId(v string) {
+ x.RpId = v
+}
+
+func (x *PublicKeyCredentialRequestOptions) SetAllowCredentials(v []*CredentialDescriptor) {
+ x.AllowCredentials = v
+}
+
+func (x *PublicKeyCredentialRequestOptions) SetExtensions(v *AuthenticationExtensionsClientInputs) {
+ x.Extensions = v
+}
+
+func (x *PublicKeyCredentialRequestOptions) SetUserVerification(v string) {
+ x.UserVerification = v
+}
+
+func (x *PublicKeyCredentialRequestOptions) HasExtensions() bool {
+ if x == nil {
+ return false
+ }
+ return x.Extensions != nil
+}
+
+func (x *PublicKeyCredentialRequestOptions) ClearExtensions() {
+ x.Extensions = nil
+}
+
+type PublicKeyCredentialRequestOptions_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Raw challenge used for assertion.
+ Challenge []byte
+ // Timeout in milliseconds.
+ TimeoutMs int64
+ // Relying Party ID.
+ RpId string
+ // Allowed credentials for assertion.
+ AllowCredentials []*CredentialDescriptor
+ // Extensions supplied by the Relying Party.
+ Extensions *AuthenticationExtensionsClientInputs
+ // User verification requirement.
+ UserVerification string
+}
+
+func (b0 PublicKeyCredentialRequestOptions_builder) Build() *PublicKeyCredentialRequestOptions {
+ m0 := &PublicKeyCredentialRequestOptions{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Challenge = b.Challenge
+ x.TimeoutMs = b.TimeoutMs
+ x.RpId = b.RpId
+ x.AllowCredentials = b.AllowCredentials
+ x.Extensions = b.Extensions
+ x.UserVerification = b.UserVerification
+ return m0
+}
+
+// Assertion response returned by the authenticator.
+// Refer to navigator.credentials.get in your browser.
+type CredentialAssertionResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Type of the credential, usually "public-key".
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ // Raw Credential ID.
+ RawId []byte `protobuf:"bytes,2,opt,name=raw_id,json=rawId,proto3" json:"raw_id,omitempty"`
+ // Assertion response from the authenticator.
+ Response *AuthenticatorAssertionResponse `protobuf:"bytes,3,opt,name=response,proto3" json:"response,omitempty"`
+ // Extensions supplied by the authenticator.
+ Extensions *AuthenticationExtensionsClientOutputs `protobuf:"bytes,4,opt,name=extensions,proto3" json:"extensions,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CredentialAssertionResponse) Reset() {
+ *x = CredentialAssertionResponse{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CredentialAssertionResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CredentialAssertionResponse) ProtoMessage() {}
+
+func (x *CredentialAssertionResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CredentialAssertionResponse) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *CredentialAssertionResponse) GetRawId() []byte {
+ if x != nil {
+ return x.RawId
+ }
+ return nil
+}
+
+func (x *CredentialAssertionResponse) GetResponse() *AuthenticatorAssertionResponse {
+ if x != nil {
+ return x.Response
+ }
+ return nil
+}
+
+func (x *CredentialAssertionResponse) GetExtensions() *AuthenticationExtensionsClientOutputs {
+ if x != nil {
+ return x.Extensions
+ }
+ return nil
+}
+
+func (x *CredentialAssertionResponse) SetType(v string) {
+ x.Type = v
+}
+
+func (x *CredentialAssertionResponse) SetRawId(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.RawId = v
+}
+
+func (x *CredentialAssertionResponse) SetResponse(v *AuthenticatorAssertionResponse) {
+ x.Response = v
+}
+
+func (x *CredentialAssertionResponse) SetExtensions(v *AuthenticationExtensionsClientOutputs) {
+ x.Extensions = v
+}
+
+func (x *CredentialAssertionResponse) HasResponse() bool {
+ if x == nil {
+ return false
+ }
+ return x.Response != nil
+}
+
+func (x *CredentialAssertionResponse) HasExtensions() bool {
+ if x == nil {
+ return false
+ }
+ return x.Extensions != nil
+}
+
+func (x *CredentialAssertionResponse) ClearResponse() {
+ x.Response = nil
+}
+
+func (x *CredentialAssertionResponse) ClearExtensions() {
+ x.Extensions = nil
+}
+
+type CredentialAssertionResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Type of the credential, usually "public-key".
+ Type string
+ // Raw Credential ID.
+ RawId []byte
+ // Assertion response from the authenticator.
+ Response *AuthenticatorAssertionResponse
+ // Extensions supplied by the authenticator.
+ Extensions *AuthenticationExtensionsClientOutputs
+}
+
+func (b0 CredentialAssertionResponse_builder) Build() *CredentialAssertionResponse {
+ m0 := &CredentialAssertionResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Type = b.Type
+ x.RawId = b.RawId
+ x.Response = b.Response
+ x.Extensions = b.Extensions
+ return m0
+}
+
+// Authenticator assertion response.
+// https://www.w3.org/TR/webauthn-2/#authenticatorassertionresponse
+type AuthenticatorAssertionResponse struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Raw client data JSON, exactly as signed by the authenticator.
+ // https://www.w3.org/TR/webauthn-2/#dictdef-collectedclientdata.
+ ClientDataJson []byte `protobuf:"bytes,1,opt,name=client_data_json,json=clientDataJson,proto3" json:"client_data_json,omitempty"`
+ // Raw authenticator data, exactly as signed by the authenticator.
+ // https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data.
+ AuthenticatorData []byte `protobuf:"bytes,2,opt,name=authenticator_data,json=authenticatorData,proto3" json:"authenticator_data,omitempty"`
+ // Raw assertion signature performed authenticatorData|clientDataJSON.
+ // https://www.w3.org/TR/webauthn-2/#assertion-signature.
+ Signature []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"`
+ // Raw user handle returned by the authenticator, if any.
+ UserHandle []byte `protobuf:"bytes,4,opt,name=user_handle,json=userHandle,proto3" json:"user_handle,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AuthenticatorAssertionResponse) Reset() {
+ *x = AuthenticatorAssertionResponse{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AuthenticatorAssertionResponse) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticatorAssertionResponse) ProtoMessage() {}
+
+func (x *AuthenticatorAssertionResponse) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *AuthenticatorAssertionResponse) GetClientDataJson() []byte {
+ if x != nil {
+ return x.ClientDataJson
+ }
+ return nil
+}
+
+func (x *AuthenticatorAssertionResponse) GetAuthenticatorData() []byte {
+ if x != nil {
+ return x.AuthenticatorData
+ }
+ return nil
+}
+
+func (x *AuthenticatorAssertionResponse) GetSignature() []byte {
+ if x != nil {
+ return x.Signature
+ }
+ return nil
+}
+
+func (x *AuthenticatorAssertionResponse) GetUserHandle() []byte {
+ if x != nil {
+ return x.UserHandle
+ }
+ return nil
+}
+
+func (x *AuthenticatorAssertionResponse) SetClientDataJson(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.ClientDataJson = v
+}
+
+func (x *AuthenticatorAssertionResponse) SetAuthenticatorData(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.AuthenticatorData = v
+}
+
+func (x *AuthenticatorAssertionResponse) SetSignature(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.Signature = v
+}
+
+func (x *AuthenticatorAssertionResponse) SetUserHandle(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.UserHandle = v
+}
+
+type AuthenticatorAssertionResponse_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Raw client data JSON, exactly as signed by the authenticator.
+ // https://www.w3.org/TR/webauthn-2/#dictdef-collectedclientdata.
+ ClientDataJson []byte
+ // Raw authenticator data, exactly as signed by the authenticator.
+ // https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data.
+ AuthenticatorData []byte
+ // Raw assertion signature performed authenticatorData|clientDataJSON.
+ // https://www.w3.org/TR/webauthn-2/#assertion-signature.
+ Signature []byte
+ // Raw user handle returned by the authenticator, if any.
+ UserHandle []byte
+}
+
+func (b0 AuthenticatorAssertionResponse_builder) Build() *AuthenticatorAssertionResponse {
+ m0 := &AuthenticatorAssertionResponse{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.ClientDataJson = b.ClientDataJson
+ x.AuthenticatorData = b.AuthenticatorData
+ x.Signature = b.Signature
+ x.UserHandle = b.UserHandle
+ return m0
+}
+
+// Extensions supplied by the Relying Party during credential assertion or
+// creation.
+// https://www.w3.org/TR/webauthn-2/#client-extension-input
+type AuthenticationExtensionsClientInputs struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // U2F application ID to be used by the authenticator, if any.
+ // Only available if using U2F compatibility mode.
+ // https://www.w3.org/TR/webauthn-2/#sctn-appid-extension.
+ AppId string `protobuf:"bytes,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+ // Enables the credProps extension.
+ // https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension
+ CredProps bool `protobuf:"varint,2,opt,name=cred_props,json=credProps,proto3" json:"cred_props,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AuthenticationExtensionsClientInputs) Reset() {
+ *x = AuthenticationExtensionsClientInputs{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AuthenticationExtensionsClientInputs) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticationExtensionsClientInputs) ProtoMessage() {}
+
+func (x *AuthenticationExtensionsClientInputs) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *AuthenticationExtensionsClientInputs) GetAppId() string {
+ if x != nil {
+ return x.AppId
+ }
+ return ""
+}
+
+func (x *AuthenticationExtensionsClientInputs) GetCredProps() bool {
+ if x != nil {
+ return x.CredProps
+ }
+ return false
+}
+
+func (x *AuthenticationExtensionsClientInputs) SetAppId(v string) {
+ x.AppId = v
+}
+
+func (x *AuthenticationExtensionsClientInputs) SetCredProps(v bool) {
+ x.CredProps = v
+}
+
+type AuthenticationExtensionsClientInputs_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // U2F application ID to be used by the authenticator, if any.
+ // Only available if using U2F compatibility mode.
+ // https://www.w3.org/TR/webauthn-2/#sctn-appid-extension.
+ AppId string
+ // Enables the credProps extension.
+ // https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension
+ CredProps bool
+}
+
+func (b0 AuthenticationExtensionsClientInputs_builder) Build() *AuthenticationExtensionsClientInputs {
+ m0 := &AuthenticationExtensionsClientInputs{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.AppId = b.AppId
+ x.CredProps = b.CredProps
+ return m0
+}
+
+// Extensions supplied by the authenticator to the Relying Party, during
+// credential assertion or creation.
+// https://www.w3.org/TR/webauthn-2/#client-extension-output.
+type AuthenticationExtensionsClientOutputs struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // If true, the AppID extension was used by the authenticator, which changes
+ // the rpIdHash accordingly.
+ // https://www.w3.org/TR/webauthn-2/#sctn-appid-extension.
+ AppId bool `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"`
+ // Credential properties per credProps extension.
+ // https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension.
+ CredProps *CredentialPropertiesOutput `protobuf:"bytes,2,opt,name=cred_props,json=credProps,proto3" json:"cred_props,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AuthenticationExtensionsClientOutputs) Reset() {
+ *x = AuthenticationExtensionsClientOutputs{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AuthenticationExtensionsClientOutputs) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AuthenticationExtensionsClientOutputs) ProtoMessage() {}
+
+func (x *AuthenticationExtensionsClientOutputs) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *AuthenticationExtensionsClientOutputs) GetAppId() bool {
+ if x != nil {
+ return x.AppId
+ }
+ return false
+}
+
+func (x *AuthenticationExtensionsClientOutputs) GetCredProps() *CredentialPropertiesOutput {
+ if x != nil {
+ return x.CredProps
+ }
+ return nil
+}
+
+func (x *AuthenticationExtensionsClientOutputs) SetAppId(v bool) {
+ x.AppId = v
+}
+
+func (x *AuthenticationExtensionsClientOutputs) SetCredProps(v *CredentialPropertiesOutput) {
+ x.CredProps = v
+}
+
+func (x *AuthenticationExtensionsClientOutputs) HasCredProps() bool {
+ if x == nil {
+ return false
+ }
+ return x.CredProps != nil
+}
+
+func (x *AuthenticationExtensionsClientOutputs) ClearCredProps() {
+ x.CredProps = nil
+}
+
+type AuthenticationExtensionsClientOutputs_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // If true, the AppID extension was used by the authenticator, which changes
+ // the rpIdHash accordingly.
+ // https://www.w3.org/TR/webauthn-2/#sctn-appid-extension.
+ AppId bool
+ // Credential properties per credProps extension.
+ // https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension.
+ CredProps *CredentialPropertiesOutput
+}
+
+func (b0 AuthenticationExtensionsClientOutputs_builder) Build() *AuthenticationExtensionsClientOutputs {
+ m0 := &AuthenticationExtensionsClientOutputs{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.AppId = b.AppId
+ x.CredProps = b.CredProps
+ return m0
+}
+
+// CredentialPropertiesOutput is the output of the credProps extension.
+type CredentialPropertiesOutput struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // If true, the created credential is a resident key (regardless of the
+ // AuthenticatorSelection.require_resident_key value).
+ // OPTIONAL by specification.
+ Rk bool `protobuf:"varint,1,opt,name=rk,proto3" json:"rk,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CredentialPropertiesOutput) Reset() {
+ *x = CredentialPropertiesOutput{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CredentialPropertiesOutput) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CredentialPropertiesOutput) ProtoMessage() {}
+
+func (x *CredentialPropertiesOutput) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CredentialPropertiesOutput) GetRk() bool {
+ if x != nil {
+ return x.Rk
+ }
+ return false
+}
+
+func (x *CredentialPropertiesOutput) SetRk(v bool) {
+ x.Rk = v
+}
+
+type CredentialPropertiesOutput_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // If true, the created credential is a resident key (regardless of the
+ // AuthenticatorSelection.require_resident_key value).
+ // OPTIONAL by specification.
+ Rk bool
+}
+
+func (b0 CredentialPropertiesOutput_builder) Build() *CredentialPropertiesOutput {
+ m0 := &CredentialPropertiesOutput{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Rk = b.Rk
+ return m0
+}
+
+// Public key credential descriptor.
+// https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialdescriptor.
+type CredentialDescriptor struct {
+ state protoimpl.MessageState `protogen:"hybrid.v1"`
+ // Type of the credential, usually "public-key".
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ // Raw Credential ID.
+ Id []byte `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CredentialDescriptor) Reset() {
+ *x = CredentialDescriptor{}
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CredentialDescriptor) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CredentialDescriptor) ProtoMessage() {}
+
+func (x *CredentialDescriptor) ProtoReflect() protoreflect.Message {
+ mi := &file_teleport_webauthn_v2_webauthn_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+func (x *CredentialDescriptor) GetType() string {
+ if x != nil {
+ return x.Type
+ }
+ return ""
+}
+
+func (x *CredentialDescriptor) GetId() []byte {
+ if x != nil {
+ return x.Id
+ }
+ return nil
+}
+
+func (x *CredentialDescriptor) SetType(v string) {
+ x.Type = v
+}
+
+func (x *CredentialDescriptor) SetId(v []byte) {
+ if v == nil {
+ v = []byte{}
+ }
+ x.Id = v
+}
+
+type CredentialDescriptor_builder struct {
+ _ [0]func() // Prevents comparability and use of unkeyed literals for the builder.
+
+ // Type of the credential, usually "public-key".
+ Type string
+ // Raw Credential ID.
+ Id []byte
+}
+
+func (b0 CredentialDescriptor_builder) Build() *CredentialDescriptor {
+ m0 := &CredentialDescriptor{}
+ b, x := &b0, m0
+ _, _ = b, x
+ x.Type = b.Type
+ x.Id = b.Id
+ return m0
+}
+
+var File_teleport_webauthn_v2_webauthn_proto protoreflect.FileDescriptor
+
+const file_teleport_webauthn_v2_webauthn_proto_rawDesc = "" +
+ "\n" +
+ "#teleport/webauthn/v2/webauthn.proto\x12\x14teleport.webauthn.v2\"m\n" +
+ "\x13CredentialAssertion\x12V\n" +
+ "\n" +
+ "public_key\x18\x01 \x01(\v27.teleport.webauthn.v2.PublicKeyCredentialRequestOptionsR\tpublicKey\"\xd7\x02\n" +
+ "!PublicKeyCredentialRequestOptions\x12\x1c\n" +
+ "\tchallenge\x18\x01 \x01(\fR\tchallenge\x12\x1d\n" +
+ "\n" +
+ "timeout_ms\x18\x02 \x01(\x03R\ttimeoutMs\x12\x13\n" +
+ "\x05rp_id\x18\x03 \x01(\tR\x04rpId\x12W\n" +
+ "\x11allow_credentials\x18\x04 \x03(\v2*.teleport.webauthn.v2.CredentialDescriptorR\x10allowCredentials\x12Z\n" +
+ "\n" +
+ "extensions\x18\x05 \x01(\v2:.teleport.webauthn.v2.AuthenticationExtensionsClientInputsR\n" +
+ "extensions\x12+\n" +
+ "\x11user_verification\x18\x06 \x01(\tR\x10userVerification\"\xf7\x01\n" +
+ "\x1bCredentialAssertionResponse\x12\x12\n" +
+ "\x04type\x18\x01 \x01(\tR\x04type\x12\x15\n" +
+ "\x06raw_id\x18\x02 \x01(\fR\x05rawId\x12P\n" +
+ "\bresponse\x18\x03 \x01(\v24.teleport.webauthn.v2.AuthenticatorAssertionResponseR\bresponse\x12[\n" +
+ "\n" +
+ "extensions\x18\x04 \x01(\v2;.teleport.webauthn.v2.AuthenticationExtensionsClientOutputsR\n" +
+ "extensions\"\xb8\x01\n" +
+ "\x1eAuthenticatorAssertionResponse\x12(\n" +
+ "\x10client_data_json\x18\x01 \x01(\fR\x0eclientDataJson\x12-\n" +
+ "\x12authenticator_data\x18\x02 \x01(\fR\x11authenticatorData\x12\x1c\n" +
+ "\tsignature\x18\x03 \x01(\fR\tsignature\x12\x1f\n" +
+ "\vuser_handle\x18\x04 \x01(\fR\n" +
+ "userHandle\"\\\n" +
+ "$AuthenticationExtensionsClientInputs\x12\x15\n" +
+ "\x06app_id\x18\x01 \x01(\tR\x05appId\x12\x1d\n" +
+ "\n" +
+ "cred_props\x18\x02 \x01(\bR\tcredProps\"\x8f\x01\n" +
+ "%AuthenticationExtensionsClientOutputs\x12\x15\n" +
+ "\x06app_id\x18\x01 \x01(\bR\x05appId\x12O\n" +
+ "\n" +
+ "cred_props\x18\x02 \x01(\v20.teleport.webauthn.v2.CredentialPropertiesOutputR\tcredProps\",\n" +
+ "\x1aCredentialPropertiesOutput\x12\x0e\n" +
+ "\x02rk\x18\x01 \x01(\bR\x02rk\":\n" +
+ "\x14CredentialDescriptor\x12\x12\n" +
+ "\x04type\x18\x01 \x01(\tR\x04type\x12\x0e\n" +
+ "\x02id\x18\x02 \x01(\fR\x02idBTZRgithub.com/gravitational/teleport/api/gen/proto/go/teleport/webauthn/v2;webauthnv2b\x06proto3"
+
+var file_teleport_webauthn_v2_webauthn_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_teleport_webauthn_v2_webauthn_proto_goTypes = []any{
+ (*CredentialAssertion)(nil), // 0: teleport.webauthn.v2.CredentialAssertion
+ (*PublicKeyCredentialRequestOptions)(nil), // 1: teleport.webauthn.v2.PublicKeyCredentialRequestOptions
+ (*CredentialAssertionResponse)(nil), // 2: teleport.webauthn.v2.CredentialAssertionResponse
+ (*AuthenticatorAssertionResponse)(nil), // 3: teleport.webauthn.v2.AuthenticatorAssertionResponse
+ (*AuthenticationExtensionsClientInputs)(nil), // 4: teleport.webauthn.v2.AuthenticationExtensionsClientInputs
+ (*AuthenticationExtensionsClientOutputs)(nil), // 5: teleport.webauthn.v2.AuthenticationExtensionsClientOutputs
+ (*CredentialPropertiesOutput)(nil), // 6: teleport.webauthn.v2.CredentialPropertiesOutput
+ (*CredentialDescriptor)(nil), // 7: teleport.webauthn.v2.CredentialDescriptor
+}
+var file_teleport_webauthn_v2_webauthn_proto_depIdxs = []int32{
+ 1, // 0: teleport.webauthn.v2.CredentialAssertion.public_key:type_name -> teleport.webauthn.v2.PublicKeyCredentialRequestOptions
+ 7, // 1: teleport.webauthn.v2.PublicKeyCredentialRequestOptions.allow_credentials:type_name -> teleport.webauthn.v2.CredentialDescriptor
+ 4, // 2: teleport.webauthn.v2.PublicKeyCredentialRequestOptions.extensions:type_name -> teleport.webauthn.v2.AuthenticationExtensionsClientInputs
+ 3, // 3: teleport.webauthn.v2.CredentialAssertionResponse.response:type_name -> teleport.webauthn.v2.AuthenticatorAssertionResponse
+ 5, // 4: teleport.webauthn.v2.CredentialAssertionResponse.extensions:type_name -> teleport.webauthn.v2.AuthenticationExtensionsClientOutputs
+ 6, // 5: teleport.webauthn.v2.AuthenticationExtensionsClientOutputs.cred_props:type_name -> teleport.webauthn.v2.CredentialPropertiesOutput
+ 6, // [6:6] is the sub-list for method output_type
+ 6, // [6:6] is the sub-list for method input_type
+ 6, // [6:6] is the sub-list for extension type_name
+ 6, // [6:6] is the sub-list for extension extendee
+ 0, // [0:6] is the sub-list for field type_name
+}
+
+func init() { file_teleport_webauthn_v2_webauthn_proto_init() }
+func file_teleport_webauthn_v2_webauthn_proto_init() {
+ if File_teleport_webauthn_v2_webauthn_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_teleport_webauthn_v2_webauthn_proto_rawDesc), len(file_teleport_webauthn_v2_webauthn_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 8,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_teleport_webauthn_v2_webauthn_proto_goTypes,
+ DependencyIndexes: file_teleport_webauthn_v2_webauthn_proto_depIdxs,
+ MessageInfos: file_teleport_webauthn_v2_webauthn_proto_msgTypes,
+ }.Build()
+ File_teleport_webauthn_v2_webauthn_proto = out.File
+ file_teleport_webauthn_v2_webauthn_proto_goTypes = nil
+ file_teleport_webauthn_v2_webauthn_proto_depIdxs = nil
+}
diff --git a/api/gen/proto/go/teleport/webauthn/v2/webauthn.pb.go b/api/gen/proto/go/teleport/webauthn/v2/webauthn_protoopaque.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/webauthn/v2/webauthn.pb.go
rename to api/gen/proto/go/teleport/webauthn/v2/webauthn_protoopaque.pb.go
index c9fad52c569..67690584539 100644
--- a/api/gen/proto/go/teleport/webauthn/v2/webauthn.pb.go
+++ b/api/gen/proto/go/teleport/webauthn/v2/webauthn_protoopaque.pb.go
@@ -18,6 +18,8 @@
// protoc (unknown)
// source: teleport/webauthn/v2/webauthn.proto
+//go:build !teleport_protohybrid
+
package webauthnv2
import (
diff --git a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster.pb.go b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster.pb.go
rename to api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protohybrid.pb.go
index b10f1275fde..d9d1af0fc0b 100644
--- a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster.pb.go
+++ b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadcluster/v1/workloadcluster.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadcluster
diff --git a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protoopaque.pb.go
index 117d83b8496..b4fc8274805 100644
--- a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadcluster/v1/workloadcluster.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadcluster
diff --git a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service.pb.go b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service.pb.go
rename to api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protohybrid.pb.go
index d1f4946d742..57482b33441 100644
--- a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service.pb.go
+++ b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadcluster/v1/workloadcluster_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadcluster
diff --git a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protoopaque.pb.go
index f0c6733aba0..7cb4ef32045 100644
--- a/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadcluster/v1/workloadcluster_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadcluster
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/attrs.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/attrs_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/attrs.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/attrs_protohybrid.pb.go
index f149707df98..790614a8ab0 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/attrs.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/attrs_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/attrs.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/attrs_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/attrs_protoopaque.pb.go
index 90cb996307f..f8a7a53769a 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/attrs_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/attrs_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/attrs.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/issuance_service.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protohybrid.pb.go
index 3c1735f9ebc..22d79250a29 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/issuance_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protoopaque.pb.go
index 5cba47d4de0..f053b02b057 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/issuance_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/issuance_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/join_attrs.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protohybrid.pb.go
index 17fe10a3010..a12fc8096ef 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/join_attrs.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protoopaque.pb.go
index bd89e2a5097..213d861d3ce 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/join_attrs_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/join_attrs.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/resource.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/resource_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/resource.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/resource_protohybrid.pb.go
index e682e18b97e..34a3f1d54d7 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/resource.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/resource_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/resource.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/resource_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/resource_protoopaque.pb.go
index 5389dd03d44..11d9e54ef49 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/resource_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/resource_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/resource.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/resource_service.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/resource_service.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protohybrid.pb.go
index e6e2405ef34..58a9d7c95e5 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/resource_service.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/resource_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protoopaque.pb.go
index 784e4803dd7..29ca5d344db 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/resource_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/resource_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protohybrid.pb.go
index ce7532e40d2..b419079d627 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/revocation_resource.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protoopaque.pb.go
index 5724035a196..c778d917b15 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/revocation_resource.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/revocation_service.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protohybrid.pb.go
index 94beb00f507..50f62610765 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/revocation_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protoopaque.pb.go
index e27125e8514..07fb8dd31bf 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/revocation_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/revocation_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protohybrid.pb.go
index 8e6cb4d10e0..194ecf65d90 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/sigstore_policy_resource.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protoopaque.pb.go
index 0324058bc43..0e6d4f78d67 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/sigstore_policy_resource.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protohybrid.pb.go
index 3381d0c1b58..aba324213ad 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/sigstore_policy_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protoopaque.pb.go
index c1d55e50ca9..fa25700adc5 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/sigstore_policy_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/sigstore.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protohybrid.pb.go
index e047b0ef4e2..dea4d528566 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/sigstore.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protoopaque.pb.go
index 9beabe23144..4e78ccddc31 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/sigstore_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/sigstore.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protohybrid.pb.go
index 1e9d8a9b1e2..c64937ed6b8 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/x509_overrides.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protoopaque.pb.go
index b04d760bb83..bd93bc6e987 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/x509_overrides.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service.pb.go
rename to api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protohybrid.pb.go
index dfd06fae346..cacb59d367e 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/x509_overrides_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protoopaque.pb.go b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protoopaque.pb.go
index 84a865441bf..8c423921864 100644
--- a/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protoopaque.pb.go
+++ b/api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/workloadidentity/v1/x509_overrides_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package workloadidentityv1
diff --git a/api/gen/proto/go/userpreferences/v1/access_graph.pb.go b/api/gen/proto/go/userpreferences/v1/access_graph_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/access_graph.pb.go
rename to api/gen/proto/go/userpreferences/v1/access_graph_protohybrid.pb.go
index e544a1f4ce6..82093c8a857 100644
--- a/api/gen/proto/go/userpreferences/v1/access_graph.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/access_graph_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/access_graph.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/access_graph_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/access_graph_protoopaque.pb.go
index fe725971628..cd3e081a6f2 100644
--- a/api/gen/proto/go/userpreferences/v1/access_graph_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/access_graph_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/access_graph.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/assist.pb.go b/api/gen/proto/go/userpreferences/v1/assist_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/assist.pb.go
rename to api/gen/proto/go/userpreferences/v1/assist_protohybrid.pb.go
index cf35febfa2f..29d19f31091 100644
--- a/api/gen/proto/go/userpreferences/v1/assist.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/assist_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/assist.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/assist_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/assist_protoopaque.pb.go
index ebfd64f8203..1d85650f285 100644
--- a/api/gen/proto/go/userpreferences/v1/assist_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/assist_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/assist.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/cluster_preferences.pb.go b/api/gen/proto/go/userpreferences/v1/cluster_preferences_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/cluster_preferences.pb.go
rename to api/gen/proto/go/userpreferences/v1/cluster_preferences_protohybrid.pb.go
index bba165400bf..a8541043f85 100644
--- a/api/gen/proto/go/userpreferences/v1/cluster_preferences.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/cluster_preferences_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/cluster_preferences.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/cluster_preferences_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/cluster_preferences_protoopaque.pb.go
index dacf1a5d8d9..0532b61eae4 100644
--- a/api/gen/proto/go/userpreferences/v1/cluster_preferences_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/cluster_preferences_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/cluster_preferences.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/discover_resource_preferences.pb.go b/api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/discover_resource_preferences.pb.go
rename to api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protohybrid.pb.go
index 2b887b1ac8a..29914ea2d58 100644
--- a/api/gen/proto/go/userpreferences/v1/discover_resource_preferences.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/discover_resource_preferences.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protoopaque.pb.go
index 5e44906fb81..f9a51fa18cd 100644
--- a/api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/discover_resource_preferences_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/discover_resource_preferences.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/onboard.pb.go b/api/gen/proto/go/userpreferences/v1/onboard_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/onboard.pb.go
rename to api/gen/proto/go/userpreferences/v1/onboard_protohybrid.pb.go
index 63468cbb278..ed556fd8db4 100644
--- a/api/gen/proto/go/userpreferences/v1/onboard.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/onboard_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/onboard.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/onboard_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/onboard_protoopaque.pb.go
index 2c0286fa6ae..5512cc30a7b 100644
--- a/api/gen/proto/go/userpreferences/v1/onboard_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/onboard_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/onboard.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/sidenav_preferences.pb.go b/api/gen/proto/go/userpreferences/v1/sidenav_preferences_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/sidenav_preferences.pb.go
rename to api/gen/proto/go/userpreferences/v1/sidenav_preferences_protohybrid.pb.go
index 7768695a1b9..23bb29defa9 100644
--- a/api/gen/proto/go/userpreferences/v1/sidenav_preferences.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/sidenav_preferences_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/sidenav_preferences.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/sidenav_preferences_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/sidenav_preferences_protoopaque.pb.go
index e38893fe475..09c260edddd 100644
--- a/api/gen/proto/go/userpreferences/v1/sidenav_preferences_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/sidenav_preferences_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/sidenav_preferences.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/theme.pb.go b/api/gen/proto/go/userpreferences/v1/theme_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/theme.pb.go
rename to api/gen/proto/go/userpreferences/v1/theme_protohybrid.pb.go
index fde9cab96f7..3997cb5b53f 100644
--- a/api/gen/proto/go/userpreferences/v1/theme.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/theme_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/theme.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/theme_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/theme_protoopaque.pb.go
index fe7bc6cf8e0..10711929e60 100644
--- a/api/gen/proto/go/userpreferences/v1/theme_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/theme_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/theme.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/unified_resource_preferences.pb.go b/api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/unified_resource_preferences.pb.go
rename to api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protohybrid.pb.go
index 6231fbfc04c..ed402c6cfe0 100644
--- a/api/gen/proto/go/userpreferences/v1/unified_resource_preferences.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/unified_resource_preferences.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protoopaque.pb.go
index 36b20be1d48..260d4710e5b 100644
--- a/api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/unified_resource_preferences_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/unified_resource_preferences.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/userpreferences.pb.go b/api/gen/proto/go/userpreferences/v1/userpreferences_protohybrid.pb.go
similarity index 99%
rename from api/gen/proto/go/userpreferences/v1/userpreferences.pb.go
rename to api/gen/proto/go/userpreferences/v1/userpreferences_protohybrid.pb.go
index 8bd3a041bae..770fc319677 100644
--- a/api/gen/proto/go/userpreferences/v1/userpreferences.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/userpreferences_protohybrid.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/userpreferences.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package userpreferencesv1
diff --git a/api/gen/proto/go/userpreferences/v1/userpreferences_protoopaque.pb.go b/api/gen/proto/go/userpreferences/v1/userpreferences_protoopaque.pb.go
index fe8c2ab9a8d..ae7e11637e6 100644
--- a/api/gen/proto/go/userpreferences/v1/userpreferences_protoopaque.pb.go
+++ b/api/gen/proto/go/userpreferences/v1/userpreferences_protoopaque.pb.go
@@ -18,7 +18,7 @@
// protoc (unknown)
// source: teleport/userpreferences/v1/userpreferences.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package userpreferencesv1
diff --git a/buf-go.gen.yaml b/buf-go.gen.yaml
index c67ffc9fad9..28778cf4d71 100644
--- a/buf-go.gen.yaml
+++ b/buf-go.gen.yaml
@@ -22,222 +22,20 @@ inputs:
- api/proto/teleport/legacy/client/proto/requestable_roles.proto
plugins:
+ # TODO(espadolini): get rid of protoopaque-retag-protoc-gen-go and switch the
+ # code generation back to opaque once there's no more tools that consume or
+ # make use of the open API. As of the time of writing, they should be
+ # build.assets/tooling/cmd/resource-ref-generator (reading source code) and
+ # github.com/gravitational/protoc-gen-terraform (generating source code that
+ # accesses exported fields).
- local:
- - go
- - run
- - google.golang.org/protobuf/cmd/protoc-gen-go
+ - sh
+ - -c
+ - 'go run google.golang.org/protobuf/cmd/protoc-gen-go | "$( GOWORK=off go -C ./build.assets/tooling tool -n github.com/gravitational/teleport/build.assets/tooling/cmd/protoopaque-retag-protoc-gen-go )"'
out: .
opt:
- module=github.com/gravitational/teleport
- # All new protos should use the OPAQUE API by default.
- - default_api_level=API_OPAQUE
- # All existing protos should remain on the HYBRID API allowing them
- # to be migrated methodically to the OPAQUE API.
- - apilevelMteleport/access_graph/v1/authorized_key.proto=API_HYBRID
- - apilevelMteleport/access_graph/v1/private_key.proto=API_HYBRID
- - apilevelMteleport/access_graph/v1/secrets_service.proto=API_HYBRID
- - apilevelMteleport/accesslist/v1/accesslist.proto=API_HYBRID
- - apilevelMteleport/accesslist/v1/accesslist_service.proto=API_HYBRID
- - apilevelMteleport/accessmonitoringrules/v1/access_monitoring_rules.proto=API_HYBRID
- - apilevelMteleport/accessmonitoringrules/v1/access_monitoring_rules_service.proto=API_HYBRID
- - apilevelMteleport/appauthconfig/v1/appauthconfig.proto=API_HYBRID
- - apilevelMteleport/appauthconfig/v1/appauthconfig_service.proto=API_HYBRID
- - apilevelMteleport/appauthconfig/v1/appauthconfig_sessions_service.proto=API_HYBRID
- - apilevelMteleport/auditlog/v1/auditlog.proto=API_HYBRID
- - apilevelMteleport/autoupdate/v1/autoupdate.proto=API_HYBRID
- - apilevelMteleport/autoupdate/v1/autoupdate_service.proto=API_HYBRID
- - apilevelMteleport/backendinfo/v1/backendinfo.proto=API_HYBRID
- - apilevelMteleport/beams/v1/beam.proto=API_HYBRID
- - apilevelMteleport/beams/v1/beam_service.proto=API_HYBRID
- - apilevelMteleport/clientiprestriction/v1/clientiprestriction.proto=API_HYBRID
- - apilevelMteleport/clientiprestriction/v1/clientiprestriction_service.proto=API_HYBRID
- - apilevelMteleport/clusterconfig/v1/access_graph.proto=API_HYBRID
- - apilevelMteleport/clusterconfig/v1/access_graph_settings.proto=API_HYBRID
- - apilevelMteleport/clusterconfig/v1/clusterconfig_service.proto=API_HYBRID
- - apilevelMteleport/crownjewel/v1/crownjewel.proto=API_HYBRID
- - apilevelMteleport/crownjewel/v1/crownjewel_service.proto=API_HYBRID
- - apilevelMteleport/dbobject/v1/dbobject.proto=API_HYBRID
- - apilevelMteleport/dbobject/v1/dbobject_service.proto=API_HYBRID
- - apilevelMteleport/dbobjectimportrule/v1/dbobjectimportrule.proto=API_HYBRID
- - apilevelMteleport/dbobjectimportrule/v1/dbobjectimportrule_service.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/database_access.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/decision_service.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/denial_metadata.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/enforcement_feature.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/permit_metadata.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/request_metadata.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/resource.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/ssh_access.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/ssh_identity.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/ssh_join.proto=API_HYBRID
- - apilevelMteleport/decision/v1alpha1/tls_identity.proto=API_HYBRID
- - apilevelMteleport/delegation/v1/delegation_session_resource.proto=API_HYBRID
- - apilevelMteleport/delegation/v1/delegation_session_service.proto=API_HYBRID
- - apilevelMteleport/desktop/v1/tdpb.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/assert.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/authenticate_challenge.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device_collected_data.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device_confirmation_token.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device_enroll_token.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device_profile.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device_source.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/device_web_token.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/devicetrust_service.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/os_type.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/tpm.proto=API_HYBRID
- - apilevelMteleport/devicetrust/v1/user_certificates.proto=API_HYBRID
- - apilevelMteleport/discoveryconfig/v1/discoveryconfig.proto=API_HYBRID
- - apilevelMteleport/discoveryconfig/v1/discoveryconfig_service.proto=API_HYBRID
- - apilevelMteleport/dynamicwindows/v1/dynamicwindows_service.proto=API_HYBRID
- - apilevelMteleport/embedding/v1/embedding.proto=API_HYBRID
- - apilevelMteleport/externalauditstorage/v1/externalauditstorage.proto=API_HYBRID
- - apilevelMteleport/externalauditstorage/v1/externalauditstorage_service.proto=API_HYBRID
- - apilevelMteleport/gitserver/v1/git_server_service.proto=API_HYBRID
- - apilevelMteleport/grpcclientconfig/v1/grpcclientconfig.proto=API_HYBRID
- - apilevelMteleport/grpcclientconfig/v1/grpcclientconfigservice.proto=API_HYBRID
- - apilevelMteleport/hardwarekeyagent/v1/hardwarekeyagent_service.proto=API_HYBRID
- - apilevelMteleport/header/v1/resourceheader.proto=API_HYBRID
- - apilevelMteleport/header/v1/metadata.proto=API_HYBRID
- - apilevelMteleport/healthcheckconfig/v1/health_check_config.proto=API_HYBRID
- - apilevelMteleport/healthcheckconfig/v1/health_check_config_service.proto=API_HYBRID
- - apilevelMteleport/identitycenter/v1/identitycenter.proto=API_HYBRID
- - apilevelMteleport/identitycenter/v1/service.proto=API_HYBRID
- - apilevelMteleport/integration/v1/awsoidc_service.proto=API_HYBRID
- - apilevelMteleport/integration/v1/awsra_service.proto=API_HYBRID
- - apilevelMteleport/integration/v1/integration_service.proto=API_HYBRID
- - apilevelMteleport/inventory/v1/inventory_service.proto=API_HYBRID
- - apilevelMteleport/issuance/v1/service.proto=API_HYBRID
- - apilevelMteleport/join/v1/joinservice.proto=API_HYBRID
- - apilevelMteleport/kube/v1/kube_service.proto=API_HYBRID
- - apilevelMteleport/kubewaitingcontainer/v1/kubewaitingcontainer.proto=API_HYBRID
- - apilevelMteleport/kubewaitingcontainer/v1/kubewaitingcontainer_service.proto=API_HYBRID
- - apilevelMteleport/label/v1/label.proto=API_HYBRID
- - apilevelMteleport/linuxdesktop/v1/linux_desktop.proto=API_HYBRID
- - apilevelMteleport/linuxdesktop/v1/linux_desktop_service.proto=API_HYBRID
- - apilevelMteleport/loginrule/v1/loginrule.proto=API_HYBRID
- - apilevelMteleport/loginrule/v1/loginrule_service.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/bot.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/bot_instance.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/bot_instance_service.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/bot_service.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/federation.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/federation_service.proto=API_HYBRID
- - apilevelMteleport/machineid/v1/workload_identity_service.proto=API_HYBRID
- - apilevelMteleport/notifications/v1/notifications.proto=API_HYBRID
- - apilevelMteleport/notifications/v1/notifications_service.proto=API_HYBRID
- - apilevelMteleport/okta/v1/okta_service.proto=API_HYBRID
- - apilevelMteleport/plugins/v1/plugin_service.proto=API_HYBRID
- - apilevelMteleport/presence/v1/relay_server.proto=API_HYBRID
- - apilevelMteleport/presence/v1/service.proto=API_HYBRID
- - apilevelMteleport/provisioning/v1/provisioning.proto=API_HYBRID
- - apilevelMteleport/recordingencryption/v1/recording_encryption.proto=API_HYBRID
- - apilevelMteleport/recordingencryption/v1/recording_encryption_service.proto=API_HYBRID
- - apilevelMteleport/recordingmetadata/v1/recordingmetadata.proto=API_HYBRID
- - apilevelMteleport/recordingmetadata/v1/recordingmetadata_service.proto=API_HYBRID
- - apilevelMteleport/resourceusage/v1/access_requests.proto=API_HYBRID
- - apilevelMteleport/resourceusage/v1/account_usage_type.proto=API_HYBRID
- - apilevelMteleport/resourceusage/v1/resourceusage_service.proto=API_HYBRID
- - apilevelMteleport/samlidp/v1/samlidp.proto=API_HYBRID
- - apilevelMteleport/scim/v1/scim_service.proto=API_HYBRID
- - apilevelMteleport/scopes/access/v1/assignment.proto=API_HYBRID
- - apilevelMteleport/scopes/access/v1/role.proto=API_HYBRID
- - apilevelMteleport/scopes/access/v1/service.proto=API_HYBRID
- - apilevelMteleport/scopes/joining/v1/service.proto=API_HYBRID
- - apilevelMteleport/scopes/joining/v1/token.proto=API_HYBRID
- - apilevelMteleport/scopes/v1/scopes.proto=API_HYBRID
- - apilevelMteleport/secreports/v1/secreports.proto=API_HYBRID
- - apilevelMteleport/secreports/v1/secreports_service.proto=API_HYBRID
- - apilevelMteleport/sessionsearch/v1/session_search.proto=API_HYBRID
- - apilevelMteleport/ssh/v1/ssh.proto=API_HYBRID
- - apilevelMteleport/stableunixusers/v1/stableunixusers.proto=API_HYBRID
- - apilevelMteleport/subca/v1/cert_authority_override.proto=API_HYBRID
- - apilevelMteleport/subca/v1/cert_authority_override_id.proto=API_HYBRID
- - apilevelMteleport/subca/v1/certificate_override.proto=API_HYBRID
- - apilevelMteleport/subca/v1/certificate_override_id.proto=API_HYBRID
- - apilevelMteleport/subca/v1/crl.proto=API_HYBRID
- - apilevelMteleport/subca/v1/csr.proto=API_HYBRID
- - apilevelMteleport/subca/v1/distinguished_name.proto=API_HYBRID
- - apilevelMteleport/subca/v1/public_key_hash.proto=API_HYBRID
- - apilevelMteleport/subca/v1/subca_service.proto=API_HYBRID
- - apilevelMteleport/summarizer/v1/access_request.proto=API_HYBRID
- - apilevelMteleport/summarizer/v1/summarizer.proto=API_HYBRID
- - apilevelMteleport/summarizer/v1/summarizer_service.proto=API_HYBRID
- - apilevelMteleport/trait/v1/trait.proto=API_HYBRID
- - apilevelMteleport/transport/v1/transport_service.proto=API_HYBRID
- - apilevelMteleport/trust/v1/trust_service.proto=API_HYBRID
- - apilevelMteleport/userloginstate/v1/userloginstate.proto=API_HYBRID
- - apilevelMteleport/userloginstate/v1/userloginstate_service.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/access_graph.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/assist.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/cluster_preferences.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/discover_resource_preferences.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/onboard.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/sidenav_preferences.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/theme.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/unified_resource_preferences.proto=API_HYBRID
- - apilevelMteleport/userpreferences/v1/userpreferences.proto=API_HYBRID
- - apilevelMteleport/userprovisioning/v2/statichostuser.proto=API_HYBRID
- - apilevelMteleport/userprovisioning/v2/statichostuser_service.proto=API_HYBRID
- - apilevelMteleport/users/v1/users_service.proto=API_HYBRID
- - apilevelMteleport/usertasks/v1/user_tasks.proto=API_HYBRID
- - apilevelMteleport/usertasks/v1/user_tasks_service.proto=API_HYBRID
- - apilevelMteleport/vnet/v1/vnet_config.proto=API_HYBRID
- - apilevelMteleport/vnet/v1/vnet_config_service.proto=API_HYBRID
- - apilevelMteleport/workloadcluster/v1/workloadcluster.proto=API_HYBRID
- - apilevelMteleport/workloadcluster/v1/workloadcluster_service.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/attrs.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/issuance_service.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/join_attrs.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/resource.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/resource_service.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/revocation_resource.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/revocation_service.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/sigstore.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/sigstore_policy_resource.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/sigstore_policy_service.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/x509_overrides.proto=API_HYBRID
- - apilevelMteleport/workloadidentity/v1/x509_overrides_service.proto=API_HYBRID
- - apilevelMaccessgraph/v1/session_search.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/access_graph_service.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/aws.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/azure.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/entra.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/events.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/github.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/gitlab.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/graph.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/netiq.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/okta.proto=API_HYBRID
- - apilevelMaccessgraph/v1alpha/resources.proto=API_HYBRID
- - apilevelMteleport/lib/multiplexer/test/ping.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/auto_update/v1/auto_update_service.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/access_request.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/app.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/auth_settings.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/cluster.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/database.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/gateway.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/kube.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/label.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/server.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/service.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/target_health.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/tshd_events_service.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/usage_events.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/v1/windows_desktop.proto=API_HYBRID
- - apilevelMteleport/lib/teleterm/vnet/v1/vnet_service.proto=API_HYBRID
- - apilevelMteleport/lib/vnet/diag/v1/diag.proto=API_HYBRID
- - apilevelMteleport/lib/vnet/v1/client_application_service.proto=API_HYBRID
- - apilevelMteleport/quicpeering/v1alpha/dial.proto=API_HYBRID
- - apilevelMteleport/relaypeering/v1alpha/dial.proto=API_HYBRID
- - apilevelMteleport/relaytunnel/v1alpha/control.proto=API_HYBRID
- - apilevelMteleport/relaytunnel/v1alpha/dial.proto=API_HYBRID
- - apilevelMteleport/relaytunnel/v1alpha/discovery_service.proto=API_HYBRID
- - apilevelMteleport/storage/local/stableunixusers/v1/stableunixusers.proto=API_HYBRID
- - apilevelMteleport/legacy/client/proto/event.proto=API_HYBRID
- - apilevelMteleport/legacy/client/proto/inventory.proto=API_HYBRID
- - apilevelMteleport/legacy/client/proto/requestable_roles.proto=API_HYBRID
+ - default_api_level=API_HYBRID
# needed by teleport/lib/teleterm/v1/usage_events.proto because we use
# managed mode for the go package name there
- Mprehog/v1alpha/connect.proto=github.com/gravitational/teleport/gen/proto/go/prehog/v1alpha;prehogv1alpha
diff --git a/build.assets/tooling/cmd/protoopaque-retag-protoc-gen-go/main.go b/build.assets/tooling/cmd/protoopaque-retag-protoc-gen-go/main.go
new file mode 100644
index 00000000000..7e78ed358b4
--- /dev/null
+++ b/build.assets/tooling/cmd/protoopaque-retag-protoc-gen-go/main.go
@@ -0,0 +1,336 @@
+// Teleport
+// Copyright (C) 2026 Gravitational, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+package main
+
+import (
+ "io"
+ "os"
+ "strings"
+
+ "google.golang.org/protobuf/proto"
+ "google.golang.org/protobuf/types/pluginpb"
+)
+
+func main() {
+ // protoc generators are programs that read a
+ // google.protobuf.compiler.CodeGeneratorRequest message from stdin and
+ // output a google.protobuf.compiler.CodeGeneratorResponse message to
+ // stdout; we're interested in tweaking the output of protoc-gen-go but
+ // there's no supported way to embed protoc-gen-go in code, so instead we
+ // act as a filter to its output, reading the original
+ // CodeGeneratorResponse, tweaking it, and writing the modified response to
+ // stdout
+
+ inBuf, err := io.ReadAll(os.Stdin)
+ if err != nil {
+ panic(err)
+ }
+
+ cgr := new(pluginpb.CodeGeneratorResponse)
+ if err := proto.Unmarshal(inBuf, cgr); err != nil {
+ panic(err)
+ }
+
+ if cgr.GetError() != "" {
+ // code generation failed, forward the response as is
+ if _, err := os.Stdout.Write(inBuf); err != nil {
+ panic(err)
+ }
+ return
+ }
+
+ for _, file := range cgr.GetFile() {
+ if file.Name == nil {
+ panic("got chunked output from protoc-gen-go")
+ }
+ if file.InsertionPoint != nil {
+ panic("got insertion point in file from protoc-gen-go")
+ }
+ if !strings.HasSuffix(file.GetName(), ".pb.go") {
+ panic("got file without .pb.go suffix from protoc-gen-go")
+ }
+
+ prefix, isProtoOpaque := strings.CutSuffix(file.GetName(), "_protoopaque.pb.go")
+ if !isProtoOpaque {
+ prefix = strings.TrimSuffix(file.GetName(), ".pb.go")
+ }
+
+ defaultHybrid := defaultHybridFromPrefix(prefix)
+
+ if isProtoOpaque {
+ before, after, ok := strings.Cut(file.GetContent(), "//go:build protoopaque\n")
+ if !ok {
+ panic("got protoopaque file without protoopaque built tag")
+ }
+
+ proto.Reset(file)
+
+ newName := prefix + "_protoopaque.pb.go"
+ file.Name = &newName
+
+ var newContent string
+ if defaultHybrid {
+ newContent = before + "//go:build teleport_protoopaque\n" + after
+ } else {
+ newContent = before + "//go:build !teleport_protohybrid\n" + after
+ }
+ file.Content = &newContent
+ } else {
+ before, after, ok := strings.Cut(file.GetContent(), "//go:build !protoopaque\n")
+ if !ok {
+ panic("got non-protoopaque file without !protoopaque built tag")
+ }
+
+ proto.Reset(file)
+
+ newName := prefix + "_protohybrid.pb.go"
+ file.Name = &newName
+
+ var newContent string
+ if defaultHybrid {
+ newContent = before + "//go:build !teleport_protoopaque\n" + after
+ } else {
+ newContent = before + "//go:build teleport_protohybrid\n" + after
+ }
+ file.Content = &newContent
+ }
+ }
+
+ outBuf, err := proto.Marshal(cgr)
+ if err != nil {
+ panic(err)
+ }
+ if _, err := os.Stdout.Write(outBuf); err != nil {
+ panic(err)
+ }
+}
+
+func defaultHybridFromPrefix(prefix string) bool {
+ switch prefix {
+ // these files should default to the hybrid codegen because code referencing
+ // them hasn't been updated yet
+ case
+ "api/client/proto/event",
+ "api/client/proto/inventory",
+ "api/client/proto/requestable_roles",
+ "api/gen/proto/go/teleport/accessgraph/v1/authorized_key",
+ "api/gen/proto/go/teleport/accessgraph/v1/private_key",
+ "api/gen/proto/go/teleport/accessgraph/v1/secrets_service",
+ "api/gen/proto/go/teleport/accesslist/v1/accesslist_service",
+ "api/gen/proto/go/teleport/accesslist/v1/accesslist",
+ "api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules_service",
+ "api/gen/proto/go/teleport/accessmonitoringrules/v1/access_monitoring_rules",
+ "api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_service",
+ "api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig_sessions_service",
+ "api/gen/proto/go/teleport/appauthconfig/v1/appauthconfig",
+ "api/gen/proto/go/teleport/auditlog/v1/auditlog",
+ "api/gen/proto/go/teleport/autoupdate/v1/autoupdate_service",
+ "api/gen/proto/go/teleport/autoupdate/v1/autoupdate",
+ "api/gen/proto/go/teleport/backendinfo/v1/backendinfo",
+ "api/gen/proto/go/teleport/beams/v1/beam_service",
+ "api/gen/proto/go/teleport/beams/v1/beam",
+ "api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction_service",
+ "api/gen/proto/go/teleport/clientiprestriction/v1/clientiprestriction",
+ "api/gen/proto/go/teleport/clusterconfig/v1/access_graph_settings",
+ "api/gen/proto/go/teleport/clusterconfig/v1/access_graph",
+ "api/gen/proto/go/teleport/clusterconfig/v1/clusterconfig_service",
+ "api/gen/proto/go/teleport/crownjewel/v1/crownjewel_service",
+ "api/gen/proto/go/teleport/crownjewel/v1/crownjewel",
+ "api/gen/proto/go/teleport/dbobject/v1/dbobject_service",
+ "api/gen/proto/go/teleport/dbobject/v1/dbobject",
+ "api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule_service",
+ "api/gen/proto/go/teleport/dbobjectimportrule/v1/dbobjectimportrule",
+ "api/gen/proto/go/teleport/decision/v1alpha1/database_access",
+ "api/gen/proto/go/teleport/decision/v1alpha1/decision_service",
+ "api/gen/proto/go/teleport/decision/v1alpha1/denial_metadata",
+ "api/gen/proto/go/teleport/decision/v1alpha1/enforcement_feature",
+ "api/gen/proto/go/teleport/decision/v1alpha1/permit_metadata",
+ "api/gen/proto/go/teleport/decision/v1alpha1/request_metadata",
+ "api/gen/proto/go/teleport/decision/v1alpha1/resource",
+ "api/gen/proto/go/teleport/decision/v1alpha1/ssh_access",
+ "api/gen/proto/go/teleport/decision/v1alpha1/ssh_identity",
+ "api/gen/proto/go/teleport/decision/v1alpha1/ssh_join",
+ "api/gen/proto/go/teleport/decision/v1alpha1/tls_identity",
+ "api/gen/proto/go/teleport/delegation/v1/delegation_session_resource",
+ "api/gen/proto/go/teleport/delegation/v1/delegation_session_service",
+ "api/gen/proto/go/teleport/desktop/v1/tdpb",
+ "api/gen/proto/go/teleport/devicetrust/v1/assert",
+ "api/gen/proto/go/teleport/devicetrust/v1/authenticate_challenge",
+ "api/gen/proto/go/teleport/devicetrust/v1/device_collected_data",
+ "api/gen/proto/go/teleport/devicetrust/v1/device_confirmation_token",
+ "api/gen/proto/go/teleport/devicetrust/v1/device_enroll_token",
+ "api/gen/proto/go/teleport/devicetrust/v1/device_profile",
+ "api/gen/proto/go/teleport/devicetrust/v1/device_source",
+ "api/gen/proto/go/teleport/devicetrust/v1/device_web_token",
+ "api/gen/proto/go/teleport/devicetrust/v1/device",
+ "api/gen/proto/go/teleport/devicetrust/v1/devicetrust_service",
+ "api/gen/proto/go/teleport/devicetrust/v1/os_type",
+ "api/gen/proto/go/teleport/devicetrust/v1/tpm",
+ "api/gen/proto/go/teleport/devicetrust/v1/user_certificates",
+ "api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig_service",
+ "api/gen/proto/go/teleport/discoveryconfig/v1/discoveryconfig",
+ "api/gen/proto/go/teleport/dynamicwindows/v1/dynamicwindows_service",
+ "api/gen/proto/go/teleport/embedding/v1/embedding",
+ "api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage_service",
+ "api/gen/proto/go/teleport/externalauditstorage/v1/externalauditstorage",
+ "api/gen/proto/go/teleport/gitserver/v1/git_server_service",
+ "api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfig",
+ "api/gen/proto/go/teleport/grpcclientconfig/v1/grpcclientconfigservice",
+ "api/gen/proto/go/teleport/hardwarekeyagent/v1/hardwarekeyagent_service",
+ "api/gen/proto/go/teleport/header/v1/metadata",
+ "api/gen/proto/go/teleport/header/v1/resourceheader",
+ "api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config_service",
+ "api/gen/proto/go/teleport/healthcheckconfig/v1/health_check_config",
+ "api/gen/proto/go/teleport/identitycenter/v1/identitycenter",
+ "api/gen/proto/go/teleport/identitycenter/v1/service",
+ "api/gen/proto/go/teleport/integration/v1/awsoidc_service",
+ "api/gen/proto/go/teleport/integration/v1/awsra_service",
+ "api/gen/proto/go/teleport/integration/v1/integration_service",
+ "api/gen/proto/go/teleport/inventory/v1/inventory_service",
+ "api/gen/proto/go/teleport/issuance/v1/service",
+ "api/gen/proto/go/teleport/join/v1/joinservice",
+ "api/gen/proto/go/teleport/kube/v1/kube_service",
+ "api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer_service",
+ "api/gen/proto/go/teleport/kubewaitingcontainer/v1/kubewaitingcontainer",
+ "api/gen/proto/go/teleport/label/v1/label",
+ "api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop_service",
+ "api/gen/proto/go/teleport/linuxdesktop/v1/linux_desktop",
+ "api/gen/proto/go/teleport/loginrule/v1/loginrule_service",
+ "api/gen/proto/go/teleport/loginrule/v1/loginrule",
+ "api/gen/proto/go/teleport/machineid/v1/bot_instance_service",
+ "api/gen/proto/go/teleport/machineid/v1/bot_instance",
+ "api/gen/proto/go/teleport/machineid/v1/bot_service",
+ "api/gen/proto/go/teleport/machineid/v1/bot",
+ "api/gen/proto/go/teleport/machineid/v1/federation_service",
+ "api/gen/proto/go/teleport/machineid/v1/federation",
+ "api/gen/proto/go/teleport/machineid/v1/workload_identity_service",
+ "api/gen/proto/go/teleport/notifications/v1/notifications_service",
+ "api/gen/proto/go/teleport/notifications/v1/notifications",
+ "api/gen/proto/go/teleport/okta/v1/okta_service",
+ "api/gen/proto/go/teleport/plugins/v1/plugin_service",
+ "api/gen/proto/go/teleport/presence/v1/relay_server",
+ "api/gen/proto/go/teleport/presence/v1/service",
+ "api/gen/proto/go/teleport/provisioning/v1/provisioning",
+ "api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption_service",
+ "api/gen/proto/go/teleport/recordingencryption/v1/recording_encryption",
+ "api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata_service",
+ "api/gen/proto/go/teleport/recordingmetadata/v1/recordingmetadata",
+ "api/gen/proto/go/teleport/resourceusage/v1/access_requests",
+ "api/gen/proto/go/teleport/resourceusage/v1/account_usage_type",
+ "api/gen/proto/go/teleport/resourceusage/v1/resourceusage_service",
+ "api/gen/proto/go/teleport/samlidp/v1/samlidp",
+ "api/gen/proto/go/teleport/scim/v1/scim_service",
+ "api/gen/proto/go/teleport/scopes/access/v1/assignment",
+ "api/gen/proto/go/teleport/scopes/access/v1/role",
+ "api/gen/proto/go/teleport/scopes/access/v1/service",
+ "api/gen/proto/go/teleport/scopes/joining/v1/service",
+ "api/gen/proto/go/teleport/scopes/joining/v1/token",
+ "api/gen/proto/go/teleport/scopes/v1/scopes",
+ "api/gen/proto/go/teleport/secreports/v1/secreports_service",
+ "api/gen/proto/go/teleport/secreports/v1/secreports",
+ "api/gen/proto/go/teleport/sessionsearch/v1/session_search",
+ "api/gen/proto/go/teleport/ssh/v1/ssh",
+ "api/gen/proto/go/teleport/stableunixusers/v1/stableunixusers",
+ "api/gen/proto/go/teleport/subca/v1/cert_authority_override_id",
+ "api/gen/proto/go/teleport/subca/v1/cert_authority_override",
+ "api/gen/proto/go/teleport/subca/v1/certificate_override_id",
+ "api/gen/proto/go/teleport/subca/v1/certificate_override",
+ "api/gen/proto/go/teleport/subca/v1/crl",
+ "api/gen/proto/go/teleport/subca/v1/csr",
+ "api/gen/proto/go/teleport/subca/v1/distinguished_name",
+ "api/gen/proto/go/teleport/subca/v1/public_key_hash",
+ "api/gen/proto/go/teleport/subca/v1/subca_service",
+ "api/gen/proto/go/teleport/summarizer/v1/access_request",
+ "api/gen/proto/go/teleport/summarizer/v1/summarizer_service",
+ "api/gen/proto/go/teleport/summarizer/v1/summarizer",
+ "api/gen/proto/go/teleport/trait/v1/trait",
+ "api/gen/proto/go/teleport/transport/v1/transport_service",
+ "api/gen/proto/go/teleport/trust/v1/trust_service",
+ "api/gen/proto/go/teleport/userloginstate/v1/userloginstate_service",
+ "api/gen/proto/go/teleport/userloginstate/v1/userloginstate",
+ "api/gen/proto/go/teleport/userprovisioning/v2/statichostuser_service",
+ "api/gen/proto/go/teleport/userprovisioning/v2/statichostuser",
+ "api/gen/proto/go/teleport/users/v1/users_service",
+ "api/gen/proto/go/teleport/usertasks/v1/user_tasks_service",
+ "api/gen/proto/go/teleport/usertasks/v1/user_tasks",
+ "api/gen/proto/go/teleport/vnet/v1/vnet_config_service",
+ "api/gen/proto/go/teleport/vnet/v1/vnet_config",
+ "api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster_service",
+ "api/gen/proto/go/teleport/workloadcluster/v1/workloadcluster",
+ "api/gen/proto/go/teleport/workloadidentity/v1/attrs",
+ "api/gen/proto/go/teleport/workloadidentity/v1/issuance_service",
+ "api/gen/proto/go/teleport/workloadidentity/v1/join_attrs",
+ "api/gen/proto/go/teleport/workloadidentity/v1/resource_service",
+ "api/gen/proto/go/teleport/workloadidentity/v1/resource",
+ "api/gen/proto/go/teleport/workloadidentity/v1/revocation_resource",
+ "api/gen/proto/go/teleport/workloadidentity/v1/revocation_service",
+ "api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_resource",
+ "api/gen/proto/go/teleport/workloadidentity/v1/sigstore_policy_service",
+ "api/gen/proto/go/teleport/workloadidentity/v1/sigstore",
+ "api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides_service",
+ "api/gen/proto/go/teleport/workloadidentity/v1/x509_overrides",
+ "api/gen/proto/go/userpreferences/v1/access_graph",
+ "api/gen/proto/go/userpreferences/v1/assist",
+ "api/gen/proto/go/userpreferences/v1/cluster_preferences",
+ "api/gen/proto/go/userpreferences/v1/discover_resource_preferences",
+ "api/gen/proto/go/userpreferences/v1/onboard",
+ "api/gen/proto/go/userpreferences/v1/sidenav_preferences",
+ "api/gen/proto/go/userpreferences/v1/theme",
+ "api/gen/proto/go/userpreferences/v1/unified_resource_preferences",
+ "api/gen/proto/go/userpreferences/v1/userpreferences",
+ "gen/proto/go/accessgraph/v1/session_search",
+ "gen/proto/go/accessgraph/v1alpha/access_graph_service",
+ "gen/proto/go/accessgraph/v1alpha/aws",
+ "gen/proto/go/accessgraph/v1alpha/azure",
+ "gen/proto/go/accessgraph/v1alpha/entra",
+ "gen/proto/go/accessgraph/v1alpha/events",
+ "gen/proto/go/accessgraph/v1alpha/github",
+ "gen/proto/go/accessgraph/v1alpha/gitlab",
+ "gen/proto/go/accessgraph/v1alpha/graph",
+ "gen/proto/go/accessgraph/v1alpha/netiq",
+ "gen/proto/go/accessgraph/v1alpha/okta",
+ "gen/proto/go/accessgraph/v1alpha/resources",
+ "gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service",
+ "gen/proto/go/teleport/lib/teleterm/v1/access_request",
+ "gen/proto/go/teleport/lib/teleterm/v1/app",
+ "gen/proto/go/teleport/lib/teleterm/v1/auth_settings",
+ "gen/proto/go/teleport/lib/teleterm/v1/cluster",
+ "gen/proto/go/teleport/lib/teleterm/v1/database",
+ "gen/proto/go/teleport/lib/teleterm/v1/gateway",
+ "gen/proto/go/teleport/lib/teleterm/v1/kube",
+ "gen/proto/go/teleport/lib/teleterm/v1/label",
+ "gen/proto/go/teleport/lib/teleterm/v1/server",
+ "gen/proto/go/teleport/lib/teleterm/v1/service",
+ "gen/proto/go/teleport/lib/teleterm/v1/target_health",
+ "gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service",
+ "gen/proto/go/teleport/lib/teleterm/v1/usage_events",
+ "gen/proto/go/teleport/lib/teleterm/v1/windows_desktop",
+ "gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service",
+ "gen/proto/go/teleport/lib/vnet/diag/v1/diag",
+ "gen/proto/go/teleport/lib/vnet/v1/client_application_service",
+ "gen/proto/go/teleport/quicpeering/v1alpha/dial",
+ "gen/proto/go/teleport/relaypeering/v1alpha/dial",
+ "gen/proto/go/teleport/relaytunnel/v1alpha/control",
+ "gen/proto/go/teleport/relaytunnel/v1alpha/dial",
+ "gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service",
+ "gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers",
+ "lib/multiplexer/test/ping":
+ return true
+ default:
+ return false
+ }
+}
diff --git a/build.assets/tooling/go.mod b/build.assets/tooling/go.mod
index fd49e17865b..ae162067a08 100644
--- a/build.assets/tooling/go.mod
+++ b/build.assets/tooling/go.mod
@@ -2,7 +2,10 @@ module github.com/gravitational/teleport/build.assets/tooling
go 1.26.5
-tool github.com/gravitational/teleport/build.assets/tooling/cmd/helm-janitor
+tool (
+ github.com/gravitational/teleport/build.assets/tooling/cmd/helm-janitor
+ github.com/gravitational/teleport/build.assets/tooling/cmd/protoopaque-retag-protoc-gen-go
+)
require (
buf.build/go/bufplugin v0.10.0
diff --git a/docs/pages/reference/infrastructure-as-code/teleport-resources/bot-instance.mdx b/docs/pages/reference/infrastructure-as-code/teleport-resources/bot-instance.mdx
index f3d1fb37d2e..aa89abc311e 100644
--- a/docs/pages/reference/infrastructure-as-code/teleport-resources/bot-instance.mdx
+++ b/docs/pages/reference/infrastructure-as-code/teleport-resources/bot-instance.mdx
@@ -5,7 +5,7 @@ sidebar_label: Bot Instance
---
{/* vale 3rd-party-products.former-names = NO */}
{/* vale messaging.capitalization = NO */}
-{/* Automatically generated from: gen/proto/go/teleport/machineid/v1/bot_instance.pb.go */}
+{/* Automatically generated from: gen/proto/go/teleport/machineid/v1/bot_instance_protohybrid.pb.go */}
{/* DO NOT EDIT */}
**Kind**: `bot_instance`
diff --git a/docs/pages/reference/infrastructure-as-code/teleport-resources/workload-cluster.mdx b/docs/pages/reference/infrastructure-as-code/teleport-resources/workload-cluster.mdx
index ce6b57680da..3e0ff09525e 100644
--- a/docs/pages/reference/infrastructure-as-code/teleport-resources/workload-cluster.mdx
+++ b/docs/pages/reference/infrastructure-as-code/teleport-resources/workload-cluster.mdx
@@ -5,7 +5,7 @@ sidebar_label: Workload Cluster
---
{/* vale 3rd-party-products.former-names = NO */}
{/* vale messaging.capitalization = NO */}
-{/* Automatically generated from: gen/proto/go/teleport/workloadcluster/v1/workloadcluster.pb.go */}
+{/* Automatically generated from: gen/proto/go/teleport/workloadcluster/v1/workloadcluster_protohybrid.pb.go */}
{/* DO NOT EDIT */}
**Kind**: `workload_cluster`
diff --git a/gen/proto/go/accessgraph/v1/session_search.pb.go b/gen/proto/go/accessgraph/v1/session_search_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1/session_search.pb.go
rename to gen/proto/go/accessgraph/v1/session_search_protohybrid.pb.go
index 5ad5f75535a..4ebdf95bd7d 100644
--- a/gen/proto/go/accessgraph/v1/session_search.pb.go
+++ b/gen/proto/go/accessgraph/v1/session_search_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1/session_search.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1
diff --git a/gen/proto/go/accessgraph/v1/session_search_protoopaque.pb.go b/gen/proto/go/accessgraph/v1/session_search_protoopaque.pb.go
index ddeb5addf3c..a65de72e1c6 100644
--- a/gen/proto/go/accessgraph/v1/session_search_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1/session_search_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1/session_search.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1
diff --git a/gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go b/gen/proto/go/accessgraph/v1alpha/access_graph_service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go
rename to gen/proto/go/accessgraph/v1alpha/access_graph_service_protohybrid.pb.go
index 924b4084326..672a22376d3 100644
--- a/gen/proto/go/accessgraph/v1alpha/access_graph_service.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/access_graph_service_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/access_graph_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/access_graph_service_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/access_graph_service_protoopaque.pb.go
index c8e74446b64..4010c2b71aa 100644
--- a/gen/proto/go/accessgraph/v1alpha/access_graph_service_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/access_graph_service_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/access_graph_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/aws.pb.go b/gen/proto/go/accessgraph/v1alpha/aws_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/aws.pb.go
rename to gen/proto/go/accessgraph/v1alpha/aws_protohybrid.pb.go
index 4e08c3ef38a..b0b74e90ede 100644
--- a/gen/proto/go/accessgraph/v1alpha/aws.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/aws_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/aws.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/aws_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/aws_protoopaque.pb.go
index 72610be4a0b..68484cbb030 100644
--- a/gen/proto/go/accessgraph/v1alpha/aws_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/aws_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/aws.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/azure.pb.go b/gen/proto/go/accessgraph/v1alpha/azure_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/azure.pb.go
rename to gen/proto/go/accessgraph/v1alpha/azure_protohybrid.pb.go
index 0f11bc652c1..d9ada384625 100644
--- a/gen/proto/go/accessgraph/v1alpha/azure.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/azure_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/azure.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/azure_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/azure_protoopaque.pb.go
index d8ca7578789..21e4c901281 100644
--- a/gen/proto/go/accessgraph/v1alpha/azure_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/azure_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/azure.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/entra.pb.go b/gen/proto/go/accessgraph/v1alpha/entra_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/entra.pb.go
rename to gen/proto/go/accessgraph/v1alpha/entra_protohybrid.pb.go
index 5c8ddb89454..3fb3f8843d3 100644
--- a/gen/proto/go/accessgraph/v1alpha/entra.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/entra_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/entra.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/entra_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/entra_protoopaque.pb.go
index cc44b323bc7..2807e0fed73 100644
--- a/gen/proto/go/accessgraph/v1alpha/entra_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/entra_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/entra.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/events.pb.go b/gen/proto/go/accessgraph/v1alpha/events_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/events.pb.go
rename to gen/proto/go/accessgraph/v1alpha/events_protohybrid.pb.go
index b90cab08efc..fbc277b7464 100644
--- a/gen/proto/go/accessgraph/v1alpha/events.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/events_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/events.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/events_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/events_protoopaque.pb.go
index 1bfe4c74f13..ca1969f90a6 100644
--- a/gen/proto/go/accessgraph/v1alpha/events_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/events_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/events.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/github.pb.go b/gen/proto/go/accessgraph/v1alpha/github_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/github.pb.go
rename to gen/proto/go/accessgraph/v1alpha/github_protohybrid.pb.go
index 49b008a584c..a7ea932eff8 100644
--- a/gen/proto/go/accessgraph/v1alpha/github.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/github_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/github.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/github_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/github_protoopaque.pb.go
index 44674cc4834..f9ae6c39524 100644
--- a/gen/proto/go/accessgraph/v1alpha/github_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/github_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/github.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/gitlab.pb.go b/gen/proto/go/accessgraph/v1alpha/gitlab_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/gitlab.pb.go
rename to gen/proto/go/accessgraph/v1alpha/gitlab_protohybrid.pb.go
index 99a7a0c695b..788d144fff6 100644
--- a/gen/proto/go/accessgraph/v1alpha/gitlab.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/gitlab_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/gitlab.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/gitlab_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/gitlab_protoopaque.pb.go
index 34bfb2246cd..44e00ad44a6 100644
--- a/gen/proto/go/accessgraph/v1alpha/gitlab_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/gitlab_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/gitlab.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/graph.pb.go b/gen/proto/go/accessgraph/v1alpha/graph_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/graph.pb.go
rename to gen/proto/go/accessgraph/v1alpha/graph_protohybrid.pb.go
index c691da672d2..f09e6246d3f 100644
--- a/gen/proto/go/accessgraph/v1alpha/graph.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/graph_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/graph.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/graph_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/graph_protoopaque.pb.go
index 48c2249a2c1..3d4e38bf8d5 100644
--- a/gen/proto/go/accessgraph/v1alpha/graph_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/graph_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/graph.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/netiq.pb.go b/gen/proto/go/accessgraph/v1alpha/netiq_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/netiq.pb.go
rename to gen/proto/go/accessgraph/v1alpha/netiq_protohybrid.pb.go
index 1c6cdea4a42..cf3a768e843 100644
--- a/gen/proto/go/accessgraph/v1alpha/netiq.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/netiq_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/netiq.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/netiq_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/netiq_protoopaque.pb.go
index 1c2c1e52577..1c6d97bb397 100644
--- a/gen/proto/go/accessgraph/v1alpha/netiq_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/netiq_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/netiq.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/okta.pb.go b/gen/proto/go/accessgraph/v1alpha/okta_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/okta.pb.go
rename to gen/proto/go/accessgraph/v1alpha/okta_protohybrid.pb.go
index 17ac003ac21..6e8073ba0a1 100644
--- a/gen/proto/go/accessgraph/v1alpha/okta.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/okta_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/okta.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/okta_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/okta_protoopaque.pb.go
index 3b7f061ada4..c08c3b8dad4 100644
--- a/gen/proto/go/accessgraph/v1alpha/okta_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/okta_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/okta.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/resources.pb.go b/gen/proto/go/accessgraph/v1alpha/resources_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/accessgraph/v1alpha/resources.pb.go
rename to gen/proto/go/accessgraph/v1alpha/resources_protohybrid.pb.go
index 8fdac5f75e9..a0f920af027 100644
--- a/gen/proto/go/accessgraph/v1alpha/resources.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/resources_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/resources.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/accessgraph/v1alpha/resources_protoopaque.pb.go b/gen/proto/go/accessgraph/v1alpha/resources_protoopaque.pb.go
index 44f53fa0454..5f37b9a35c3 100644
--- a/gen/proto/go/accessgraph/v1alpha/resources_protoopaque.pb.go
+++ b/gen/proto/go/accessgraph/v1alpha/resources_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: accessgraph/v1alpha/resources.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package accessgraphv1alpha
diff --git a/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service.pb.go b/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service.pb.go
rename to gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protohybrid.pb.go
index 614c0a030d6..e52d9059b3d 100644
--- a/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/auto_update/v1/auto_update_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package auto_updatev1
diff --git a/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protoopaque.pb.go
index 6eaee5a797d..03fd2749536 100644
--- a/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/auto_update/v1/auto_update_service_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/auto_update/v1/auto_update_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package auto_updatev1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/access_request.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/access_request_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/access_request.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/access_request_protohybrid.pb.go
index 89745fcb01b..ad642dada78 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/access_request.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/access_request_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/access_request.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/access_request_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/access_request_protoopaque.pb.go
index 148aa2e2b4e..0f395873be4 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/access_request_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/access_request_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/access_request.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/app.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/app_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/app.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/app_protohybrid.pb.go
index 691ba1fdd15..53eaf5aefce 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/app.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/app_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/app.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/app_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/app_protoopaque.pb.go
index 1003dfeb5bc..d140c380494 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/app_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/app_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/app.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/auth_settings.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/auth_settings.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protohybrid.pb.go
index 8df174ce842..69caeaaa221 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/auth_settings.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/auth_settings.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protoopaque.pb.go
index 35a24addb02..65c0f759844 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/auth_settings_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/auth_settings.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/cluster.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/cluster_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/cluster.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/cluster_protohybrid.pb.go
index 129c3701a9f..cae4186b532 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/cluster.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/cluster_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/cluster.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/cluster_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/cluster_protoopaque.pb.go
index 6a82d547e6d..0958513aa77 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/cluster_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/cluster_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/cluster.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/database.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/database_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/database.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/database_protohybrid.pb.go
index 5f3b688a0e1..67986bde2ef 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/database.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/database_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/database.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/database_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/database_protoopaque.pb.go
index d8720e5562b..9901f56deca 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/database_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/database_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/database.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/gateway.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/gateway_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/gateway.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/gateway_protohybrid.pb.go
index 68b0eb7e051..323666c165b 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/gateway.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/gateway_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/gateway.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/gateway_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/gateway_protoopaque.pb.go
index 7761011f72a..da7baa881d3 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/gateway_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/gateway_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/gateway.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/kube.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/kube_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/kube.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/kube_protohybrid.pb.go
index ac029435e48..72293c670c6 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/kube.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/kube_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/kube.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/kube_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/kube_protoopaque.pb.go
index 9684bc262be..1f43e3483e6 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/kube_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/kube_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/kube.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/label.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/label_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/label.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/label_protohybrid.pb.go
index cf46c4f0440..8daf248235c 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/label.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/label_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/label.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/label_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/label_protoopaque.pb.go
index d490839d7e0..14438373336 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/label_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/label_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/label.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/server.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/server_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/server.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/server_protohybrid.pb.go
index 1b87ad8603d..91d509761de 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/server.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/server_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/server.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/server_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/server_protoopaque.pb.go
index a2033c36bdd..b6a8e60b7f1 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/server_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/server_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/server.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/service.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/service.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/service_protohybrid.pb.go
index ad0dfd28bea..15b81d017a8 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/service.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/service_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/service_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/service_protoopaque.pb.go
index cf30cd84805..cb8bb27bd7e 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/service_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/service_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/target_health.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/target_health_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/target_health.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/target_health_protohybrid.pb.go
index 1fc419cfa52..5932e024273 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/target_health.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/target_health_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/target_health.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/target_health_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/target_health_protoopaque.pb.go
index c590dc295e8..793a6715467 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/target_health_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/target_health_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/target_health.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protohybrid.pb.go
index d407006d8fd..6603b3c2e04 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/tshd_events_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protoopaque.pb.go
index ba23a48e7eb..08c7f4dd2e7 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/tshd_events_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/usage_events.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/usage_events_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/usage_events.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/usage_events_protohybrid.pb.go
index 5df74b7cfbf..ccd4e0a3921 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/usage_events.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/usage_events_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/usage_events.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/usage_events_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/usage_events_protoopaque.pb.go
index 5e3b3d4607a..d888fe5914e 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/usage_events_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/usage_events_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/usage_events.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/v1/windows_desktop.pb.go
rename to gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protohybrid.pb.go
index 17bfbc773aa..5fdefeaad3e 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/windows_desktop.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protoopaque.pb.go
index 44734c35b25..422d9b74722 100644
--- a/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/v1/windows_desktop_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/v1/windows_desktop.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package teletermv1
diff --git a/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service.pb.go b/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service.pb.go
rename to gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protohybrid.pb.go
index 3a52108c91a..c089afebc85 100644
--- a/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/vnet/v1/vnet_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package vnetv1
diff --git a/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protoopaque.pb.go b/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protoopaque.pb.go
index 066695d52d4..d478637e225 100644
--- a/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/teleterm/vnet/v1/vnet_service_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/teleterm/vnet/v1/vnet_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package vnetv1
diff --git a/gen/proto/go/teleport/lib/vnet/diag/v1/diag.pb.go b/gen/proto/go/teleport/lib/vnet/diag/v1/diag_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/vnet/diag/v1/diag.pb.go
rename to gen/proto/go/teleport/lib/vnet/diag/v1/diag_protohybrid.pb.go
index c10142271b5..4977dbf9ec9 100644
--- a/gen/proto/go/teleport/lib/vnet/diag/v1/diag.pb.go
+++ b/gen/proto/go/teleport/lib/vnet/diag/v1/diag_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/vnet/diag/v1/diag.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package diagv1
diff --git a/gen/proto/go/teleport/lib/vnet/diag/v1/diag_protoopaque.pb.go b/gen/proto/go/teleport/lib/vnet/diag/v1/diag_protoopaque.pb.go
index 416e360d7ac..3bb6e6885e1 100644
--- a/gen/proto/go/teleport/lib/vnet/diag/v1/diag_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/vnet/diag/v1/diag_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/vnet/diag/v1/diag.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package diagv1
diff --git a/gen/proto/go/teleport/lib/vnet/v1/client_application_service.pb.go b/gen/proto/go/teleport/lib/vnet/v1/client_application_service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/lib/vnet/v1/client_application_service.pb.go
rename to gen/proto/go/teleport/lib/vnet/v1/client_application_service_protohybrid.pb.go
index 76cf5a5599e..d349a8ac125 100644
--- a/gen/proto/go/teleport/lib/vnet/v1/client_application_service.pb.go
+++ b/gen/proto/go/teleport/lib/vnet/v1/client_application_service_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/vnet/v1/client_application_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package vnetv1
diff --git a/gen/proto/go/teleport/lib/vnet/v1/client_application_service_protoopaque.pb.go b/gen/proto/go/teleport/lib/vnet/v1/client_application_service_protoopaque.pb.go
index 06d36f73b10..ff1ac52dbc5 100644
--- a/gen/proto/go/teleport/lib/vnet/v1/client_application_service_protoopaque.pb.go
+++ b/gen/proto/go/teleport/lib/vnet/v1/client_application_service_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/lib/vnet/v1/client_application_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package vnetv1
diff --git a/gen/proto/go/teleport/quicpeering/v1alpha/dial.pb.go b/gen/proto/go/teleport/quicpeering/v1alpha/dial_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/quicpeering/v1alpha/dial.pb.go
rename to gen/proto/go/teleport/quicpeering/v1alpha/dial_protohybrid.pb.go
index 09664885902..212543e20b8 100644
--- a/gen/proto/go/teleport/quicpeering/v1alpha/dial.pb.go
+++ b/gen/proto/go/teleport/quicpeering/v1alpha/dial_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/quicpeering/v1alpha/dial.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package quicpeeringv1alpha
diff --git a/gen/proto/go/teleport/quicpeering/v1alpha/dial_protoopaque.pb.go b/gen/proto/go/teleport/quicpeering/v1alpha/dial_protoopaque.pb.go
index 8c99e8e9d3b..56223cc8764 100644
--- a/gen/proto/go/teleport/quicpeering/v1alpha/dial_protoopaque.pb.go
+++ b/gen/proto/go/teleport/quicpeering/v1alpha/dial_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/quicpeering/v1alpha/dial.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package quicpeeringv1alpha
diff --git a/gen/proto/go/teleport/relaypeering/v1alpha/dial.pb.go b/gen/proto/go/teleport/relaypeering/v1alpha/dial_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/relaypeering/v1alpha/dial.pb.go
rename to gen/proto/go/teleport/relaypeering/v1alpha/dial_protohybrid.pb.go
index 6a3773f3385..468a92a28a5 100644
--- a/gen/proto/go/teleport/relaypeering/v1alpha/dial.pb.go
+++ b/gen/proto/go/teleport/relaypeering/v1alpha/dial_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaypeering/v1alpha/dial.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package relaypeeringv1alpha
diff --git a/gen/proto/go/teleport/relaypeering/v1alpha/dial_protoopaque.pb.go b/gen/proto/go/teleport/relaypeering/v1alpha/dial_protoopaque.pb.go
index 5613149eb7e..4eec5cd1e61 100644
--- a/gen/proto/go/teleport/relaypeering/v1alpha/dial_protoopaque.pb.go
+++ b/gen/proto/go/teleport/relaypeering/v1alpha/dial_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaypeering/v1alpha/dial.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package relaypeeringv1alpha
diff --git a/gen/proto/go/teleport/relaytunnel/v1alpha/control.pb.go b/gen/proto/go/teleport/relaytunnel/v1alpha/control_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/relaytunnel/v1alpha/control.pb.go
rename to gen/proto/go/teleport/relaytunnel/v1alpha/control_protohybrid.pb.go
index 80be5fb55af..15052a1dcf3 100644
--- a/gen/proto/go/teleport/relaytunnel/v1alpha/control.pb.go
+++ b/gen/proto/go/teleport/relaytunnel/v1alpha/control_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaytunnel/v1alpha/control.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package relaytunnelv1alpha
diff --git a/gen/proto/go/teleport/relaytunnel/v1alpha/control_protoopaque.pb.go b/gen/proto/go/teleport/relaytunnel/v1alpha/control_protoopaque.pb.go
index 2802c546b24..b4e83110b7a 100644
--- a/gen/proto/go/teleport/relaytunnel/v1alpha/control_protoopaque.pb.go
+++ b/gen/proto/go/teleport/relaytunnel/v1alpha/control_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaytunnel/v1alpha/control.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package relaytunnelv1alpha
diff --git a/gen/proto/go/teleport/relaytunnel/v1alpha/dial.pb.go b/gen/proto/go/teleport/relaytunnel/v1alpha/dial_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/relaytunnel/v1alpha/dial.pb.go
rename to gen/proto/go/teleport/relaytunnel/v1alpha/dial_protohybrid.pb.go
index ca14d878744..351dd0b3f7d 100644
--- a/gen/proto/go/teleport/relaytunnel/v1alpha/dial.pb.go
+++ b/gen/proto/go/teleport/relaytunnel/v1alpha/dial_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaytunnel/v1alpha/dial.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package relaytunnelv1alpha
diff --git a/gen/proto/go/teleport/relaytunnel/v1alpha/dial_protoopaque.pb.go b/gen/proto/go/teleport/relaytunnel/v1alpha/dial_protoopaque.pb.go
index 9afe40d7ea7..8041607d680 100644
--- a/gen/proto/go/teleport/relaytunnel/v1alpha/dial_protoopaque.pb.go
+++ b/gen/proto/go/teleport/relaytunnel/v1alpha/dial_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaytunnel/v1alpha/dial.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package relaytunnelv1alpha
diff --git a/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service.pb.go b/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service.pb.go
rename to gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protohybrid.pb.go
index 5e2007f1bb4..cadaa829d43 100644
--- a/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service.pb.go
+++ b/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaytunnel/v1alpha/discovery_service.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package relaytunnelv1alpha
diff --git a/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protoopaque.pb.go b/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protoopaque.pb.go
index 2e1d0ddb604..eb40fe8e778 100644
--- a/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protoopaque.pb.go
+++ b/gen/proto/go/teleport/relaytunnel/v1alpha/discovery_service_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/relaytunnel/v1alpha/discovery_service.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package relaytunnelv1alpha
diff --git a/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers.pb.go b/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protohybrid.pb.go
similarity index 99%
rename from gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers.pb.go
rename to gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protohybrid.pb.go
index f5979f1c782..26635ceb92e 100644
--- a/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers.pb.go
+++ b/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protohybrid.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/storage/local/stableunixusers/v1/stableunixusers.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package stableunixusersv1
diff --git a/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protoopaque.pb.go b/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protoopaque.pb.go
index 10911bbc152..0609a3d5128 100644
--- a/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protoopaque.pb.go
+++ b/gen/proto/go/teleport/storage/local/stableunixusers/v1/stableunixusers_protoopaque.pb.go
@@ -20,7 +20,7 @@
// protoc (unknown)
// source: teleport/storage/local/stableunixusers/v1/stableunixusers.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package stableunixusersv1
diff --git a/lib/multiplexer/test/ping.pb.go b/lib/multiplexer/test/ping_protohybrid.pb.go
similarity index 99%
rename from lib/multiplexer/test/ping.pb.go
rename to lib/multiplexer/test/ping_protohybrid.pb.go
index 92a29350aa8..6709e8715ec 100644
--- a/lib/multiplexer/test/ping.pb.go
+++ b/lib/multiplexer/test/ping_protohybrid.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/multiplexer/test/ping.proto
-//go:build !protoopaque
+//go:build !teleport_protoopaque
package test
diff --git a/lib/multiplexer/test/ping_protoopaque.pb.go b/lib/multiplexer/test/ping_protoopaque.pb.go
index 46a71457273..a0de5848e04 100644
--- a/lib/multiplexer/test/ping_protoopaque.pb.go
+++ b/lib/multiplexer/test/ping_protoopaque.pb.go
@@ -21,7 +21,7 @@
// protoc (unknown)
// source: teleport/lib/multiplexer/test/ping.proto
-//go:build protoopaque
+//go:build teleport_protoopaque
package test